问题
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
例子
思路
- 方法1
- 回溯
代码
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> list = new ArrayList<>();
list.add(new ArrayList<Integer>());
for(int n : nums) {
int size=list.size();
for(int i=0; i<size; i++) {
List<Integer> now_list = new ArrayList<>(list.get(i));
now_list.add(n);
list.add(now_list);
}
}
return list;
}
}
//回溯
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> list = new ArrayList<>();
get(nums,list,new ArrayList<Integer>(),0);
return list;
}
public void get(int[] nums,List<List<Integer>> list, List<Integer> temp_list, int start) {
list.add(new ArrayList<>(temp_list));
for(int i=start; i<nums.length; i++) {
temp_list.add(nums[i]);
get(nums,list,temp_list,i+1);
temp_list.remove(temp_list.size()-1);
}
}
}