题目描述:
给你一个整数数组 nums 数组中的元素互不相同。返回该数组所有可能的子集(幂集)
解集不能包含重复的子集,你可以按照任意顺序返回解集
示例1:
输入: nums = [1,2,3]
输出:[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
示例2:
输入: nums = [0]
输出:[[],[0]]
提示:
- 1 <= nums.length <= 10
- -10 <= nums[i] <= 10
- nums 中的元素互不相同
package com.javaxiang.leetcode;
import java.util.ArrayList;
import java.util.List;
public class Solution2 {
/**
* 给你一个整数数组 nums 数组中的元素互不相同。返回该数组所有可能的子集(幂集)
* 解集不能包含重复的子集,你可以按照任意顺序返回解集
*
* 示例1:
* 输入: nums = [1,2,3]
* 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
*
* 示例2:
* 输入: nums = [0]
* 输出:[[],[0]]
*
* 提示:
* 1 <= nums.length <= 10
* -10 <= nums[i] <= 10
* nums 中的元素互不相同
*/
public static void main(String[] args) {
int[] nums = new int[]{1,2,3};
List<List<Integer>> res = new ArrayList<>((int) Math.pow(2,nums.length));
List<Integer> init = new ArrayList<>();
res.add(init);
//[]
//[] [1]
//[] [1] [2] [1,2]
//[] [1] [2] [1,2] [3] [1,3] [2,3] [1,2,3]
for (int num : nums) {
int size = res.size();
for (int j = 0; j < size; j++) {
List<Integer> tmp = new ArrayList<>(res.get(j));
tmp.add(num);
res.add(tmp);
}
}
System.out.println(res);
}
}