链接:78. 子集
假设我们要求[1, 2, 3]的子集:
我们知道[1, 2]的子集是A:
而[1, 2, 3]就是比[1, 2]多了一个元素3;所以将3加入到上述A中的每个集合中,得到一个新集合B:
结论:[1, 2, 3]的子集就是上述的A ∪ B的:
代码实现:
public static List<List<Integer>> enumerate(int[] nums) {List<List<Integer>> res = new ArrayList<>();res.add(new ArrayList<>());// 初始形态时,res为空;遍历每个操作数numsfor (Integer n : nums) {// 遍历res结果集里的每个集合,都把n加入一次得到新的集合for (int i = 0; i < res.size(); i++) {List<Integer> newSub = new ArrayList<>(res.get(i));newSub.add(n);res.add(newSub);}}return res;}