给你一个整数数组
nums
,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
回溯法
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
if(nums.length == 0){
return res;
}
List<Integer> path = new ArrayList<>();
dfs(0,nums,path,res);
return res;
}
private void dfs(int begin,int[] nums,List<Integer> path,List<List<Integer>> res){
//放在这会把[]空的结果算上
res.add(new ArrayList<>(path));
for(int i = begin;i<nums.length;i++){
path.add(nums[i]);
// res.add(new ArrayList<>(path));,没有空结果,不对
dfs(i+1,nums,path,res);
path.remove(path.size()-1);
}
}
}