题目描述
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
方法:回溯
新建一个res队列,作为结果返回
新建一个in队列,用来存储符合条件的子集
每次到一个层,都可以选择是否将该层的数加入队列in
当前层 = 数组的长度时,将in队列加入到res中
代码:
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
List<Integer> in = new ArrayList<>();
int len = nums.length;
dfs(res,in,nums,len,0);
return res;
}
public void dfs(List<List<Integer>> res,List<Integer> in,int[]nums,int len,int level){
if(level == len){
res.add(new ArrayList<>(in));
return;
}
dfs(res,in,nums,len,level+1);
in.add(nums[level]);
dfs(res,in,nums,len,level+1);
in.remove(in.size()-1);
}
}