深度优先遍历,通过set进行去重:
//
// Created by jt on 2020/8/25.
//
class Solution {
public:
vector<vector<int> > subsetsWithDup(vector<int> &S) {
sort(S.begin(), S.end());
vector<int> vec;
set<vector<int> > sv;
dfs(S, vec, sv, 0);
return vector<vector<int> >(sv.begin(), sv.end());
}
void dfs(vector<int> &S, vector<int> vec, set<vector<int> > &sv, int begin) {
if (begin >= S.size()) { sv.insert(vec); return; }
dfs(S, vec, sv, begin + 1);
vec.push_back(S[begin]);
dfs(S, vec, sv, begin + 1);
}
};
京公网安备 11010502036488号