subsets-ii

来源:互联网 发布:matlab 图片矩阵 编辑:程序博客网 时间:2024/05/22 07:07

题目:

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 subsetWithDup_aux(set<vector<int>> &sv, vector<int>& path, int index, int count,                    vector<int> &S){       if (count == 0){         sv.insert(path);         return;     }     if (index >= S.size())         return;     path.push_back(S[index]);     subsetWithDup_aux(sv, path, index + 1, count - 1, S);     path.pop_back();     subsetWithDup_aux(sv, path, index + 1, count, S);    }    vector<vector<int> > subsetsWithDup(vector<int> &S) {     sort(S.begin(), S.end());     set<vector<int>> sv;     for (int i = 0; i <= S.size(); i++){         vector<int> path;         subsetWithDup_aux(sv, path, 0, i, S);     }     return vector<vector<int>>(sv.begin(), sv.end());    }};

点评:

组合的思想

原创粉丝点击