题目链接:
题目描述:
给一个数组,把它当做一个集合,求这个集合的所有子集。子集元素降序排列。
For example,
If nums = [1,2,3], a solution is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
思路:
QAQ第一次做把这道题当成全排列的那种了,真的是蠢死了。
比如数组是[1,2,3],
全排列是123选了,会有132啊…..
这个只要1,2,3三个数字都有了就行了。
先排序,再回溯解决。
代码:
lass Solution {
public:
vector<vector<int>> res;
int len;
void subsets(vector<int>& subset, vector<int>& nums, int n){
res.push_back(subset);
for (int i = n; i<len; i++){
subset.push_back(nums[i]);
subsets(subset, nums ,i+ 1);
subset.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
len = nums.size();
if (len == 0){
return res;
}
sort(nums.begin(),nums.end());
vector<int> subset;
subsets(subset, nums,0);
return res;
}
};