Question 90–Subsets II
给定一个整数集合,含有重复的元素,请给出所有的子集(不含重复集合)。
算法
先把原集合排序,然后像上篇博客中的Subsets中的算法一样。
Code
vector<vector<int>> subsetsWithDup(vector<int>& nums){
sort(nums.begin(),nums.end());
vector<vector<int>> subset;
vector<int> a;
subset.push_back(a);
if(nums.size()==0) return subset;
a.push_back(nums[0]);
subset.push_back(a);
for(int i=1; i<nums.size(); i++){
int size=subset.size();
for(int j=0; j<size; j++){
(a=subset[j]).push_back(nums[i]);
for(int iter=0; iter<subset.size(); iter++){
if(subset[iter]==a) break;
if(iter==size-1) subset.push_back(a);
}
}
}
return subset;
}