[LeetCode] Subsets II

来源:互联网 发布:maka是什么软件 编辑:程序博客网 时间:2024/04/30 13:18
class Solution {public:    vector<vector<int> > ret;    vector<int> sln;        void DFS(vector<int> &S, int n) {        if (S.size() == n) {            ret.push_back(sln);            return;        }                int count = 1;        while (n + 1 < S.size() && S[n] == S[n + 1]) {            count++;            n++;        }                for (int i = 0; i <= count; i++) {            for (int j = 0; j < i; j++)                sln.push_back(S[n]);                        DFS(S, n + 1);                        for (int j = 0; j < i; j++)                sln.pop_back();        }    }        vector<vector<int> > subsetsWithDup(vector<int> &S) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        ret.clear();        sln.clear();                sort(S.begin(), S.end());        DFS(S, 0);                return ret;    }};


Small Case: 4ms

Large Case: 56ms


Time: O(2^n)

Space: O(2^n)