题目:
Given an integer array nums, return all possible subsets (the power set).
The solution set must not contain duplicate subsets.
这道题就是排列组合,不过要求子集必须是有序的。这道题开始的时候我费了很久的时间去排序, 最后发现结果不要求和样例输出给的顺序相同,哭了。
class Solution {
public:
bool cmp(vector<int>a, vector<int>b)
{
return a.size() > b.size();
}
void getSubset(const vector<int>& nums, int i, vector<vector<int>>&subset, vector<int>sub)
{
sub.push_back(nums[i]);
subset.push_back(sub);
for(auto j = i + 1; j < nums.size(); j++)
getSubset(nums, j, subset, sub);
}
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>>subset;
vector<int>sub;
vector<int>arr = {0};
subset.push_back(arr);
subset[0].pop_back();
for(auto i=0; i<nums.size();i++)
getSubset(nums, i, subset, sub);
return subset;
}
};