LeetCode - Subsets II

来源:互联网 发布:c 连接没有密码mysql 编辑:程序博客网 时间:2024/05/17 23:07

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],  []]
class Solution {public:    void combine(set<vector<int> >& numSet, vector<int>& S, vector<int>& num,int begin,int k){if(k==0){    numSet.insert(num);return;}for(int i=begin;i<S.size();i++){num.push_back(S[i]);combine(numSet,S,num,i+1,k-1);num.pop_back();}    }    vector<vector<int> >  subsetsWithDup(vector<int> &S) {        vector<vector<int> > result;set<vector<int> > numSet;if(S.empty()||S.size()==0){return result;}sort(S.begin(),S.end());        vector<int> num;    numSet.insert(num);for(int i=1;i<=S.size();i++){combine(numSet,S,num,0,i);}result.assign(numSet.begin(),numSet.end());return result;    }};
原创粉丝点击