Subsets II
来源:互联网 发布:阿里云服务器ftp网站 编辑:程序博客网 时间:2024/05/09 07:11
Given a collection of integers that might contain duplicates, S, return all possible subsets.
Note:
- Elements in a subset must be in non-descending order.
- The solution set must not contain duplicate subsets.
For example,
If S = [1,2,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], []]
class Solution {public: vector<vector<int> > subsetsWithDup(vector<int> &S) { vector<vector<int> > res; vector<int> tmp; res.push_back(tmp); if (S.empty()) return res; sort(S.begin(), S.end()); int preInt = 0; vector<vector<int> > pre; for (int i = 0; i < S.size(); i++) { if(!pre.empty() && S[i] == preInt) { for(int j = 0; j < pre.size(); j++) { pre[j].push_back(S[i]); } } else { pre.clear(); pre.insert(pre.begin(), res.begin(), res.end()); for(int j = 0; j < res.size(); j++) { pre[j].push_back(S[i]); } } res.insert(res.end(), pre.begin(), pre.end()); preInt = S[i]; } return res; }};
包含了重复元素,所以如果当前值大于上一个值,需要对每个vector增加当前值并附加到原来vector,如果相等只对上一次附加过的那部分值附加
稍微简化一点版
class Solution {public: vector<vector<int> > subsetsWithDup(vector<int> &S) { vector<vector<int> > res; vector<int> tmp; res.push_back(tmp); if (S.empty()) return res; sort(S.begin(), S.end()); vector<vector<int> > pre; for (int i = 0; i < S.size(); i++) { if(!pre.empty() && S[i] == pre[0][0]) { for(int j = 0; j < pre.size(); j++) { pre[j].push_back(S[i]); } } else { pre.clear(); pre.insert(pre.begin(), res.begin(), res.end()); for(int j = 0; j < res.size(); j++) { pre[j].push_back(S[i]); } } res.insert(res.end(), pre.begin(), pre.end()); } return res; }};
0 0
- 【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
- Subsets II
- 用C/C++开发android应用
- java之数组与内存控制
- ffmpeg+ffserver搭建流媒体服务器
- JAVA中String与StringBuffer的区别
- MySql常用命令
- Subsets II
- 主动保护器的简介
- 使用ffserver实现转发实时流媒体(摄像头捕获)
- 大范围内素数的求法的效率问题
- UITableView整理
- hdu 1788 Chinese remainder theorem again(最小公倍数)
- pvr/pvr.ccz文件转png,使用ant脚本实现
- weblogic常用调优方法
- Android NDK JNI之HelloWorld两种方法汇总