LeetCode 78. 子集

78. 子集

解题思路

递归 + 回溯
每一个节点都会有两种选择,选或者不选

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
private List<List<Integer>> res = new ArrayList<>();
private List<Integer> tmp = new ArrayList<>();
private int path_len = 0;

public List<List<Integer>> subsets(int[] nums) {
dfs(nums);
return res;
}

private void dfs(int[] nums) {
if(path_len == nums.length) {
res.add(new ArrayList<>(tmp));
return;
}

// 选当前节点
tmp.add(nums[path_len]);
path_len ++;
dfs(nums);
path_len --;
tmp.remove(tmp.size() - 1);

// 不选当前节点
path_len ++;
dfs(nums);
path_len --;
}
}

LeetCode 78. 子集
https://sowink.cn/2026/02/08/LeetCode-78-子集/
作者
Xurx
发布于
2026年2月8日
许可协议