LeetCode SubSets II

来源:互联网 发布:英克软件多少钱 编辑:程序博客网 时间:2024/05/17 06:10

Subsets II

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],  []]
Solution:

class Solution {public:    vector<vector<int> > subsetsWithDup(vector<int> &S) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        vector<vector<int> > result,save;        result.push_back(vector<int>());        if(S.empty())            return result;        sort(S.begin(),S.end());        result.push_back(vector<int>(1,S[0]));        save.push_back(vector<int>(1,S[0]));        for(int i=1;i<S.size();++i){            if(S[i]==S[i-1]){                for(int j=0;j<save.size();++j){                    save[j].push_back(S[i]);                    result.push_back(save[j]);                }            }else{                save.clear();                for(int j=result.size()-1;j>=0;--j){                    result.push_back(result[j]);                    result.back().push_back(S[i]);                    save.push_back(result.back());                }            }        }        return result;    }};

原创粉丝点击