题目描述:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
思路:
常见思路有枚举,DFS,回溯算法。
这里采用循环枚举。
通过答案:
class Solution { //循环枚举
public List<List<Integer>> subsets(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++){
List<Integer> subStr=new ArrayList<Integer>(res.get(i)); //每增加一个元素就追加到之前的集合
subStr.add(n);
res.add(subStr);
}
}
return res;
}
}