Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,3]
, a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
Show Similar Problems
Have you met this question in a real inte
public class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
res = subsetsHelper(nums);
return res;
}
public List<List<Integer>> subsetsHelper(int[] nums){
List<List<Integer>> res = new ArrayList<List<Integer>>();
if (nums.length == 0)
return res;
else if (nums.length == 1){
res.add(new ArrayList<Integer>());
List<Integer> temp = new ArrayList<Integer>();
temp.add(nums[0]);
res.add(temp);
return res;
}
else{
List<List<Integer>> temp = new ArrayList<List<Integer>>();
int[] nums_subset = Arrays.copyOfRange(nums, 0, nums.length - 1);
temp = subsetsHelper(nums_subset);
int t = nums[nums.length - 1];
for(List<Integer> list : temp){
List<Integer> new_list = new ArrayList<Integer>(list);
new_list.add(t);
res.add(list);
res.add(new_list);
}
return res;
}
}
}
哎哎也是不容易,debug了好久才没语法错误。
需要注意的是: 对Temp 这个List<List<Integer>> 进行循环的循环体中,不能对它同时进行修改。