题目链接:
题目描述:
给一个数组,把它当做一个集合,求这个集合的所有子集。子集元素降序排列。
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;
}
};

本文深入解析了LeetCode上的子集问题,包括解题思路、代码实现和示例说明,帮助读者理解如何通过回溯法求解集合的所有子集,并提供了具体的代码实现。
1473

被折叠的 条评论
为什么被折叠?



