您的位置:首页 > 其它

LeetCode: Subsets II

2013-04-21 12:51 337 查看
这题自己没想出来看了网上答案,才知道只要在上一题的基础上改用set而不用vector就可以了,set和vector的区别就在于set里没有重复元素,只要用set.insert(*), 会自动识别是否重复。set好牛逼。。

class Solution {
public:
void dfs(int cur, int n, set<vector<int>> &T, vector<int> &tmp, vector<int> S) {
if (cur == n) {
T.insert(tmp);
return;
}
dfs(cur+1, n, T, tmp, S);
tmp.push_back(S[cur]);
dfs(cur+1, n, T, tmp, S);
tmp.pop_back();
}
vector<vector<int> > subsetsWithDup(vector<int> &S) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
sort(S.begin(), S.end());
set<vector<int>> T;
vector<vector<int>> ret;
if (!S.size()) return ret;
vector<int> tmp;
dfs(0, S.size(), T, tmp, S);
for (set<vector<int>>::iterator it = T.begin(); it != T.end(); it++)
ret.push_back(*it);
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: