[leetcode]Subsets II

来源:互联网 发布:node.js 手机 编辑:程序博客网 时间:2024/06/05 01:00

Subsets II

有重复元素

class Solution {public:    vector<vector<int> > subsetsWithDup(vector<int> &S) {        vector<vector<int>> res;        vector<int> emp;        res.push_back(emp);//add empty set        if(S.empty()){            return res;        }        sort(S.begin(),S.end());//non-descending order                int prev_i=0;//记录上一次加入的子集们的起始index        for(vector<int>::iterator it=S.begin();it<S.end();it++){            //如果S的当前元素和前一个元素相同,只拷贝上次加进来的子集            int start=(it!=S.begin()&&*it==*(it-1)?prev_i:0);            int end=res.size();            for(int i=start;i<end;i++){                vector<int> tmp;                for(vector<int>::iterator itr=res[i].begin();itr<res[i].end();itr++){                    tmp.push_back(*itr);                }                tmp.push_back(*it);                res.push_back(tmp);            }            prev_i=end;//update the index        }        return res;    }};


0 0