题目链接
幂集
题目描述
注意点
- 集合中不包含重复的元素
解答思路
- 可以使用深度优先遍历的思想按顺序将相应的元素添加到子集中,并将每个子集添加到结果集
代码
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
List<Integer> sonRes = new ArrayList<>();
res.add(new ArrayList<>(sonRes));
dfs(nums, 0, res, sonRes);
return res;
}
public void dfs(int[] nums, int idx, List<List<Integer>> res, List<Integer> sonRes) {
for (int i = idx; i < nums.length; i++) {
sonRes.add(nums[i]);
res.add(new ArrayList<>(sonRes));
dfs(nums, i + 1, res, sonRes);
sonRes.remove(sonRes.size() - 1);
}
}
}
关键点
- 空集也是子集的一种
- 在将某个元素加入到子集深度优先遍历后需要将该元素从子集中移除,也就是回溯,便于遍历不包含该元素的子集的情况