题目描述:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
思路:
简单的枚举。详见https://blog.csdn.net/SG_WGL/article/details/89760909
代码:
class Solution {
public List<List<Integer>> subsets(int[] nums) {
int n = nums.length;
List<List<Integer>> res = new ArrayList<>();
// 大小为n的集合子集可用1<<n种二进制数值表示
for (int i = 0; i < (1 << n); i++) {
List<Integer> list = new ArrayList<>();
// 表示下标为j的元素是否被选取
for (int j = 0; j < n; j++) {
if ((i & (1 << j)) != 0) {
list.add(nums[j]);
}
}
res.add(list);
}
return res;
}
}