LeetCode-Subsets II-可重复子集和-DFS
2014-10-12 23:22
429 查看
https://oj.leetcode.com/problems/subsets-ii/
预处理一下记录每个数字以及其出现的次数。然后在DFS时枚举出现次数即可。
View Code
预处理一下记录每个数字以及其出现的次数。然后在DFS时枚举出现次数即可。
class Solution { public: int n,m; vector <int> s; vector <int> d; vector<vector<int> > tot; vector <int> cur; void Solve(int p){ if (p==n){ tot.push_back(cur); return; } for (int i=0;i<=d[p];i++){ Solve(p+1); cur.push_back(s[p]); } for (int i=0;i<=d[p];i++){ cur.pop_back(); } } vector<vector<int> > subsetsWithDup(vector<int> &S) { map <int,int> cm; m=S.size(); for (int i=0;i<m;i++){ if (cm.find(S[i])==cm.end()) cm[S[i]]=1; else cm[S[i]]++; } n=cm.size(); s.resize(n); d.resize(n); map<int,int>::iterator it=cm.begin(); int count=0; for (;it!=cm.end();it++) { s[count]=it->first; d[count++]=it->second; } Solve(0); return tot; } };
View Code
相关文章推荐
- [LeetCode]—Subsets II 求数组子集(有重复值)
- Leetcode 90 Subsets II (打印不重复的子集)
- Subsets II [leetcode] 从获取子集的递归和循环方法说起,解决重复子集的问题
- LeetCode | Subsets II(带有重复数据的数组的子集)
- [Leetcode] subsets ii 求数组所有的子集
- [LeetCode系列]子集枚举问题[无重复元素]
- lintcode 中等题:subsets II 带重复元素的子集
- Leetcode 78 Subsets + 90 Subsets II 子集
- leetcode 698. Partition to K Equal Sum Subsets K个相等子集 + 深度优先搜索DFS
- [LeetCode系列]子集枚举问题[有重复元素]
- leetcode 78. Subsets(DFS找集合的全部子集)
- LeetCode—*Combination Sum II(DFS算法C数组中有重复值)
- Subsets II 求有重复元素的集合的子集 @LeetCode
- leetCode_找出不重复子集
- [LeetCode] Subsets II 子集
- Leetcode:Subsets 求数组的所有子集(DFS)
- 【LeetCode】Subsets_II 带重复元素的子集 - Medium
- LeetCode-90-Subsets II 暴力dfs回溯
- [leetcode][tree][dfs] Populating Next Right Pointers in Each Node
- LeetCode----56. Merge Intervals(合并包含重复区间的数组)