子集2
class Solution {
public:
void huisu(int i, vector<int> nums, vector<int> &temp, set<vector <int>> &shuchu)
{
for (int j = i; j<nums.size(); ++j)
{
temp.push_back(nums[j]);
shuchu.insert(temp);
huisu(j + 1, nums, temp, shuchu);
temp.pop_back();
}
}
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
//为什么重复的子集,我们如何删除重复子集呢,使用set
vector<vector<int>> result;
set<vector<int>> shuchu;
int len = nums.size();
sort(nums.begin(), nums.end());
int i = 0;
vector<int> temp;
shuchu.insert(temp);
huisu(i, nums, temp, shuchu);
for (auto s : shuchu)
{
result.push_back(s);
}
return result;
}
};