lintcode-带重复元素的子集-18
来源:互联网 发布:gta5挽歌改装数据 编辑:程序博客网 时间:2024/05/14 02:39
给定一个可能具有重复数字的列表,返回其所有可能的子集
样例
如果S = [1,2,2],一个可能的答案为:
[ [2], [1], [1,2,2], [2,2], [1,2], []]
注意
子集中的每个元素都是非降序的
两个子集间的顺序是无关紧要的
解集中不能包含重复子集
class Solution {public: void subsetsWithDup(vector<int> &S,int pos){ result.push_back(base); for(int i=pos;i<size;++i){ if(i!=pos&&S[i]==S[i-1]) //当有重复元素(因为是升序数组,所以重复元素相邻)S[i-1]上一次 continue; //刚被调用的,而S[i]和S[i-1]相同,所以就不用调用S[i]了 base.push_back(S[i]); subsetsWithDup(S,i+1); base.pop_back(); } } vector<vector<int> > subsetsWithDup(const vector<int> &S1) { if(S1.empty()) return result; vector<int> S(S1); //因为S1被const修饰,所以需要一个副本 size=S.size(); sort(S.begin(),S.end()); subsetsWithDup(S,0); //函数重载 return result; }private: int size; vector<vector<int> > result; vector<int> base; };
0 0
- lintcode-带重复元素的子集-18
- LintCode 18 带重复元素的子集
- lintcode(18)带重复元素的子集
- LintCode-----17.带重复元素的子集
- LintCode 18-带重复元素的子集 JAVA
- (lintcode)第18题 带重复元素的子集
- lintcode---子集(带重复元素和不带重复元素的两种解法)
- 带重复元素的子集
- 带重复元素的子集
- LintCode笔记(11)—— 带重复元素的子集
- 题目:带重复元素的子集
- Java实现-带重复元素的子集
- lintcode-带重复元素的排列 -16
- LintCode 16 带重复元素的排列
- LintCode 带重复元素的子序列
- lintcode(16)带重复元素的排列
- LintCode:M-带重复元素的排列
- (lintcode)第16题 带重复元素的排列
- 浅谈计算机中的存储模型(四)磁盘
- git忽略特定文件或目录
- 【SQL优化】中文是合法的
- oracle数据库学习笔记(四)
- Response.setContentType()参数说明
- lintcode-带重复元素的子集-18
- 表格
- Android基础知识
- UINavigationController+storyboard
- CPU使用高问题分析
- 移动版本的优化——说白了就是PC和移动端网页的对接
- 10个你需要知道的开源服务器技术
- Java__重写(Override)权责问题
- Oracle-常用通用函数、条件判断函数和多行函数