已知一组数(其中有重复元素),求这组数可以组成的所有子集,结果中无重复的子集。
例如:nums[]=[2,1,2,2]
结果为:[[],[1],[1,2],[1,2,2],[1,2,2,2],[2],[2,2],[2,2,2]]
注意:[2,1,2]与[1,2,2]是重复的集合。
#include<vector>
#include<algorithm>
class Solution
{
public:
Solution() {
};
~Solution() {
};
std::vector<std::vector<int>> subsetsWithDup(std::vector<int>& nums)
{
std::vector<std::vector<int>> result;
std::vector<int> item;
std::sort(nums.begin(), nums.end());
result.push_back(item);
generate(0, nums, result, item);
return result;
}
private:
void generate(int i, std::vector<int>& nums, std::vector<std::vector<int>>& result,
std::vector<int > item)
{
if (i >= nums.size())
{
return;
}
item