Lintcode_18 Subsets II
来源:互联网 发布:java 退出程序 编辑:程序博客网 时间:2024/06/10 01:08
Given a list of numbers that may has duplicate numbers, return all possible subsets
Example
If S = [1,2,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], []]
class Solution {public: /** * @param S: A set of numbers. * @return: A list of lists. All valid subsets. */ vector<vector<int> > subsetsWithDup(const vector<int> &S) { // write your code here vector<int> temp; vector<vector<int>> res = {temp}; vector<int> s = S; sort(s.begin(), s.end()); bfs(s, res); return res; } void bfs(vector<int>& s, vector<vector<int>>& res) { queue<pair<vector<int>, int>> que; for (int i = 0; i < s.size(); i++) { vector<int>:: iterator itr_low = lower_bound(s.begin() + i, s.end(), s[i]); vector<int>:: iterator itr_up = upper_bound(s.begin() + i, s.end(), s[i]); int ind = itr_up - s.begin(); vector<int> temp; for (int j = 0; j < itr_up - itr_low; j++) { temp.push_back(s[i]); que.push(make_pair(temp, ind)); } i = ind - 1; } while (!que.empty()) { vector<int> target = que.front().first; int ind = que.front().second; res.push_back(target); que.pop(); if (ind < s.size()) { for (int i = ind; i < s.size(); i++) { vector<int> temp = target; vector<int>:: iterator itr_low = lower_bound(s.begin() + i, s.end(), s[i]); vector<int>:: iterator itr_up = upper_bound(s.begin() + i, s.end(), s[i]); int ind_1 = itr_up - s.begin(); for (int j = 0; j < itr_up - itr_low; j++) { temp.push_back(s[i]); que.push(make_pair(temp, ind_1)); } i = ind_1 - 1; } } } }};
0 0
- Lintcode_18 Subsets II
- 【LeetCode】 Subsets Subsets II
- 【LeetCode】Subsets & Subsets II
- LeetCode Subsets && Subsets II
- Subsets and Subsets II
- LeetCode Subsets && Subsets II
- LeetCode-Subsets & Subsets II
- Subsets II
- Subsets II
- Subsets II
- Subsets II
- Subsets II
- Subsets II
- Subsets II
- Subsets II
- Subsets II
- Subsets II
- Subsets II
- Lintcode_11 Search Range in Binary Search Tree
- 矩阵乘法的经典题目_源自Matrix67_
- 获取APK签名sha1值
- Lintcode_16 Permutations II
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- Lintcode_18 Subsets II
- C# 怎样将DateTime类型进行日期的加减
- java学习总结(16.06.28)包装类和包装类的常用方法
- TP框架之多文件上传
- linux基础学习笔记-7-ssh服务,NFS服务,tftp服务
- 详解移位运算符-二进制中1的个数
- 1016
- [暴搜剪枝] BZOJ 3733 [Pa2013]Iloczyn
- [拆边费用流] BZOJ 1449 [JSOI2009]球队收益