78.子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
思路:
1.DFS 注意dfs(begin)的变化
代码
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
dfs(nums, 0, res, new ArrayList<Integer>());
return res;
}
public List<List<Integer>> dfs(int[] nums, int begin, List<List<Integer>> res, ArrayList<Integer> tmp) {
res.add(new ArrayList<>(tmp));
for (int i = begin; i < nums.length; i++) {//0,1,2
//add
tmp.add(nums[i]);
//dfs:i+1需要格外注意
dfs(nums, i + 1, res, tmp);
//remove
tmp.remove(tmp.size() - 1);
}
return res;
}
}