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?