Leetcode--Subsets II
来源:互联网 发布:mac开机一个问号 编辑:程序博客网 时间:2024/06/05 19:15
Problem Description:
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], []]
分析:要求打印出所有不重复的组合,可以利用一个flag数组记录当前元素是否已被使用,然后判断之前该元素是否已被重复使用,所有组合为包含和不包含当前元素的总和,具体代码如下:
class Solution {public: void dfs(vector<int> &s, int beg, int len, vector<int> &mid, vector<vector<int> > &res,vector<int> &flag) { if(len==0) { res.push_back(mid); return; } if(beg==s.size()) return; if(beg==0||s[beg]!=s[beg-1]||(s[beg]==s[beg-1]&&flag[beg-1]==1))//选中当前元素 { mid.push_back(s[beg]); flag[beg]=1; dfs(s,beg+1,len-1,mid,res,flag); flag[beg]=0; mid.pop_back(); dfs(s,beg+1,len,mid,res,flag); } else //不选中当前元素 { dfs(s,beg+1,len,mid,res,flag); } } vector<vector<int> > subsetsWithDup(vector<int> &S) { vector<vector<int> > res; int len=S.size(); if(len==0) return res; vector<int> mid; vector<int> flag(len,0); sort(S.begin(),S.end()); for(int i=0;i<=len;++i)//长度为0到len的组合 dfs(S,0,i,mid,res,flag); }};
0 0
- 【LeetCode】 Subsets Subsets II
- 【LeetCode】Subsets & Subsets II
- LeetCode Subsets && Subsets II
- LeetCode Subsets && Subsets II
- LeetCode-Subsets & Subsets II
- [LeetCode] Combinations、Subsets、Subsets II
- 【Leetcode】【python】Subsets/Subsets II
- LeetCode: Subsets II
- LeetCode SubSets II
- LeetCode: Subsets II
- leetcode 48: Subsets II
- [LeetCode] Subsets II
- [Leetcode] Subsets II
- [leetcode] Subsets II
- leetcode Subsets II
- leetcode Subsets II problem
- [LeetCode]Subsets II
- [leetcode]Subsets II
- Plus One
- PHP微信公众开发笔记(四)
- “服务器无法接入网络”超简单一例:注意防火墙的设置
- 0-1背包问题及变种
- c语言的switch
- Leetcode--Subsets II
- 在Python上使用Berkeley DB ——bsddb
- 并发编程--合并任务的结果
- 安装jdk8 for Linux
- 计算机图形学和OpenGL(二)坐标系和绘制点线函数
- function类型
- BZOJ 2763 JLOI2011 飞行路线 分层图+堆优化SPFA
- 多继承(虚继承)派生类对象内存结构
- 关于傅里叶的一些东西(整理)