Subsets II

来源:互联网 发布:南阳企业网站排名优化 编辑:程序博客网 时间:2024/06/05 06:45

Given a collection of integers that might contain duplicates, S, return all possible subsets.

Note:

  • Elements in a subset must be in non-descending order.
  • The solution set must not contain duplicate subsets.

For example,
If S = [1,2,2], a solution is:

[  [2],  [1],  [1,2,2],  [2,2],  [1,2],  []]

利用set 去重,先把子集存在set中,然后通过copy+back_inserter向空的resultvector中复制元素变为所需的类型

class Solution {public:    vector<vector<int> > subsetsWithDup(vector<int> &S) {        int n=S.size(),num=pow(2,n);        sort(S.begin(),S.end());        set<vector<int>> result;        vector<int> temp;        for(int i=0;i<num;i++){            for(int j=0;j<n;j++)                if((i>>j)&0x1) temp.push_back(S[j]);            result.insert(temp);            temp.clear();        }        vector<vector<int>> resultvector;        copy(result.begin(),result.end(),back_inserter(resultvector));        return resultvector;    }};


0 0
原创粉丝点击