lintcode:Subsets II
2016-03-27 15:31
483 查看
Description
Notes
Testcase
Judge
Given a list of numbers that may has duplicate numbers, return all possible subsets
Have you met this question in a real interview?
Yes
Notice
Each element in a subset must be in non-descending order.
The ordering between two subsets is free.
The solution set must not contain duplicate subsets.
Example
If S =
is:
Challenge
Can you do it in both recursively and iteratively?
Notes
Testcase
Judge
Given a list of numbers that may has duplicate numbers, return all possible subsets
Have you met this question in a real interview?
Yes
Notice
Each element in a subset must be in non-descending order.
The ordering between two subsets is free.
The solution set must not contain duplicate subsets.
Example
If S =
[1,2,2], a solution
is:
[ [2], [1], [1,2,2], [2,2], [1,2], [] ]
Challenge
Can you do it in both recursively and iteratively?
class Solution { private: void subsetsWithDupHelper(const vector<int> &S, int curIdx, vector<int> &curVtr, vector<vector<int>> &retVtr, bool isPreChoosen) { // 在前面一个数和当前的数相同的情况下 // 前选,当前可以选和不选 // 前不选, 当前不能选,只能不选 if (curIdx == S.size()) { retVtr.push_back(curVtr); return; } subsetsWithDupHelper(S, curIdx+1, curVtr, retVtr, false); if (curIdx > 0 && S[curIdx] == S[curIdx-1] && !isPreChoosen) return; curVtr.push_back(S[curIdx]); subsetsWithDupHelper(S, curIdx+1, curVtr, retVtr, true); curVtr.pop_back(); } public: /** * @param S: A set of numbers. * @return: A list of lists. All valid subsets. */ vector<vector<int> > subsetsWithDup(vector<int> &S) { // write your code here vector<vector<int>> retVtr; if (S.size() == 0) return retVtr; sort(S.begin(), S.end()); //sort是关键之一 vector<int> curVtr; subsetsWithDupHelper(S, 0, curVtr, retVtr, true); return retVtr; } };
相关文章推荐
- J2EE轻量级框架--3.26学习心得
- ansible解密
- The Suspects 简单的并查集
- hybrid app
- poj1185(状态压缩dp)
- Github简单教程--入门
- php的分页查询建立分页类
- Python实现一个简单的Feistel结构的密码算法
- eclipse设置打印GC
- app证书
- POJ 3159
- 详解spring-MVC DispatcherServlet运行
- MFC-自绘控件(CRadio篇)
- 小白笔记------图片加密
- Nothing
- linux内核设计与实现一书阅读整理 之第五章
- c# Arraylist的重复问题
- Unit Test、 UI Test
- java线程同步——CountDownLatch
- 要成为linux网站运维工程师必须要掌握的技能