Iterative
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<vector<int>> ret(1);//空集
sort(nums.begin(), nums.end());
int m=0;
for(int i=0;i<nums.size();++i){
int len=ret.size();//ret size一直在变 必须要先算出长度!
int j = i!=0 &&nums[i]==nums[i-1]? m :0; //i!=0 !!!!
for(;j<len;++j){
vector<int> path=ret[j];
path.push_back(nums[i]);
ret.push_back(path);
}
m=len;
}
return ret;
}
Last updated
Was this helpful?