leetcode:Subsets II

来源:互联网 发布:mac如何隐藏桌面文件 编辑:程序博客网 时间:2024/06/14 22:25

这道题目用深搜

1、N个数字的可能的组合可以当做是N位二进制数,1表示选择该位,0表示不选择;

2、可以用set先保存可以方便去重。

class Solution {    set<vector<int>> result;public:    void dfs(vector<int>&S, int i, vector<int> tmp){        if(i == S.size()){            sort(tmp.begin(), tmp.end());            result.insert(tmp);            return;        }        dfs(S, i+1, tmp);                 tmp.push_back(S[i]);        dfs(S, i+1, tmp);                      }          vector<vector<int> > subsetsWithDup(vector<int> &S) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        result.clear();        vector<int> tmp;        dfs(S, 0, tmp);        set<vector<int>>::iterator it;                 vector<vector<int>> ret;        for(it = result.begin(); it!=result.end(); it++){            ret.push_back(*it);        }                 return ret;            }};