给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
解题思路:
迭代
以[1, 2, 3]
迭代过程为例,如下:
- 原来:
[[]]
- 添加的第一个数字对所有存在的子集:
[[], [1]]
; - 添加第二个要所有存在的子集:
[[], [1], [2], [1, 2]]
; - 将第三个数字添加到所有已存在的子集:
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
。
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
int s=nums.size();
vector<vector<int>>v(1,vector<int>());
for(int i=0;i<s;i++){
int n=v.size();
for(int j=0;j<n;j++){
v.push_back(v[j]);
v.back().push_back(nums[i]);
}
}
return v;
}
};