Leetcode: Subsets II

来源:互联网 发布:开关电源电路仿真软件 编辑:程序博客网 时间:2024/06/16 01:30

http://oj.leetcode.com/problems/subsets-ii/


class Solution {public:    // First, we sort the input set    // Second, whenever we have a new element, we count the number of this element    // Third, we enumerate how many elements we put into the current selection    vector<vector<int> > res;    void subsetsWithDupHelper(vector<int> &S, vector<int> current, int pos){        if(pos==S.size()){            res.push_back(current);            return;        }                int cnt=1;        while((pos+cnt)<S.size()&&S[pos]==S[pos+cnt]) cnt++;        for(int i=0;i<=cnt;i++){            subsetsWithDupHelper(S,current,pos+cnt);            current.push_back(S[pos]);        }    }    vector<vector<int> > subsetsWithDup(vector<int> &S) {        res.clear();        sort(S.begin(),S.end());        subsetsWithDupHelper(S, vector<int>(), 0);        return res;    }};