leetcode-Subsets II

来源:互联网 发布:网络歌手曹菲儿 编辑:程序博客网 时间:2024/06/08 07:46

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 sub(vector<int> &a, vector<int> set, vector<vector<int> > &sets, int n, int i, bool t)    {        if(n == i)        {            sets.push_back(set);            return;        }                if((t == true)&&(a[i] == a[i-1]))        {            set.push_back(a[i]);            sub(a,set,sets,n,i+1,true);            return;        }        else        {            sub(a,set,sets,n,i+1,false);            set.push_back(a[i]);            sub(a,set,sets,n,i+1,true);            return;        }    }        vector<vector<int> > subsetsWithDup(vector<int> &S) {        vector<int> a = S;        sort(a.begin(),a.end());        vector<int>set;        vector<vector<int> > sets;        int n = a.size();        int num = 0;        sub(a,set,sets,n,num,false);        return sets;    }};


0 0