题目
78. 子集
题解
代码
import java.util.*;
public class code78 {
public static List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
List<Integer> list = new ArrayList<Integer>();
dfs(res, list, 0, nums);
return res;
}
public static void dfs(List<List<Integer>> res, List<Integer> list, int start, int nums[]) {
res.add(new ArrayList<>(list));
for (int i = start; i <= nums.length - 1; i++) {
list.add(nums[i]);
dfs(res, list, i + 1, nums);
list.remove(list.size() - 1);
}
}
public static void main(String[] args) {
int nums[] = { 1, 2, 3 };
List<List<Integer>> res = subsets(nums);
System.out.println(res);
}
}
参考
- 回溯算法——题解一
- 二进制位,逐个枚举,DFS 三种思路,9+ 种以上的写法——题解二
- 位运算——题解三
- 详细通俗的思路分析,多解法——题解四
- 回溯 + 位掩码(Python 代码、Java 代码)