[LeetCode]78. 子集(java实现)dfs
1. 题目
2. 读题(需要重点注意的东西)
思路:
dfs,对于每个数nums[u]有选或者不选两种情况:
- 选nums[u]:
path.add(nums[u]); dfs(nums,u+1) path.remove(path.size()-1)```
- 不选nums[u],直接进入下一层
dfs(nums,u+1)
3. 解法
---------------------------------------------------解法---------------------------------------------------:
class Solution {
List<List<Integer>> res = new ArrayList<>();
List<Integer> path = new ArrayList<>();
public List<List<Integer>> subsets(int[] nums) {
dfs(nums,0); // 从nums[0]开始选
return res;
}
public void dfs(int[] nums,int u){
if(u == nums.length){
res.add(new ArrayList<>(path));
return;
}
// 对于每个数有选或者不选两种情况
// 选nusm[0]
path.add(nums[u]);
dfs(nums,u+1);
path.remove(path.size()-1);
// 不选
dfs(nums,u+1);
}
}
可能存在的问题: