// 子集-递归
// 输入:nums = [1,2,3]
// 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
public static void recursion(int[] nums, int i, List<List<Integer>> res) {
if (i >= nums.length) return;
int size = res.size();
for (int j = 0; j < size; j++) {
List<Integer> newSub = new ArrayList<Integer>(res.get(j));
newSub.add(nums[i]);
res.add(newSub);
}
recursion(nums, i + 1, res);
}
public static List<List<Integer>> en(int[] nums){
List<List<Integer>> res=new ArrayList<List<Integer>>();
res.add(new ArrayList<Integer>());
for (Integer n:
nums) {
int size = res.size();
for (int i = 0; i <size ; i++) {
ArrayList<Integer> sub = new ArrayList<Integer>(res.get(i));
sub.add(n);
res.add(sub);
}
}
return res;
}