@java
78 子集
class Solution {
List<Integer> t = new ArrayList<Integer>();
List<List<Integer>> ans = new ArrayList<List<Integer>>();
public List<List<Integer>> subsets(int[] nums) {
dfs(0, nums);
return ans;
}
public void dfs(int cur, int[] nums) {
if (cur == nums.length) {
ans.add(new ArrayList<Integer>(t));
return;
}
t.add(nums[cur]);
dfs(cur + 1, nums);//不存储当前元素
t.remove(t.size() - 1);
dfs(cur + 1, nums);//存储当前元素
}
}
思路
通过DFS遍历每个元素是否存在在当前结果队列中,组成不同的结果队列,将所有结果队列拼接至一起即完成了子集的遍历