题目:
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
示例 1:
输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
题解:
枚举:逐个枚举,空集的幂集只有空集,每增加一个元素,让之前幂集中的每个集合,追加这个元素,就是新增的子集。(好聪明啊~)
package test;
import java.util.ArrayList;
import java.util.List;
class Solution {
public static List<List<Integer>> enumerate(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
res.add(new ArrayList<>());// 空 []
for (int i = 0; i < nums.length; i++) {
int size = res.size();
for (int j = 0; j < size; j++) {
List<Integer> list = new ArrayList<>(res.get(j));
list.add(nums[i]);
res.add(list);
}
}
return res;
}
}
public class Main{
public static void main (String []args){
int[] a = {1,2,3};
List<List<Integer>> p = Solution.enumerate(a);
System.out.print(" " + p);
}
}