leetcode 90. subsets
解题思路:
要生成子集,对于vector 中的每个数,对于每个子集有两种情况,加入或不加入。
因此代码:
class Solution {
public:
void subsetG(vector<int> nums, vector<vector<int>>& result, vector<int> temp, int c)
{
if(c>=nums.size())
{
result.push_back(temp);
return ;
}
int i=c;
subsetG(nums,result, temp,i+1);
temp.push_back(nums[i]);
subsetG(nums,result, temp,i+1); } vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>> result;
vector<int> temp;
subsetG(nums, result,temp,0); return result; }
};
但是这样会造成许多重复的子集,因为重复的情况我们只需要考虑一次.可以分为拿和不拿. 如果拿的话就按照正常往下一层搜索, 如果不拿当前值的话, 那么也要跳过接下来和当前值相等的元素.
class Solution {
public:
void subsetG(vector<int> nums, vector<vector<int>>& result, vector<int> temp, int c)
{
if(c>=nums.size())
{
result.push_back(temp);
return ;
}
int i=c;
while(c+1<nums.size()&&nums[i]==nums[c+1])
{
c++;
}
subsetG(nums,result, temp,c+1); temp.push_back(nums[i]); subsetG(nums,result, temp,i+1); } vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>> result;
vector<int> temp;
subsetG(nums, result,temp,0); return result; }
};
leetcode 90. subsets的更多相关文章
- [LeetCode] 90.Subsets II tag: backtracking
Given a collection of integers that might contain duplicates, nums, return all possible subsets (the ...
- [leetcode]90. Subsets II数组子集(有重)
Given a collection of integers that might contain duplicates, nums, return all possible subsets (the ...
- [LeetCode] 90. Subsets II 子集合 II
Given a collection of integers that might contain duplicates, nums, return all possible subsets (the ...
- LeetCode 90. Subsets II (子集合之二)
Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...
- [LeetCode] 90. Subsets II 子集合之二
Given a collection of integers that might contain duplicates, S, return all possible subsets. Note: ...
- Leetcode#90 Subsets II
原题地址 跟Subsets(参见这篇文章)类似. 但因为有重复元素,所以要考虑去重问题. 什么情况下会出现重复呢?比如S = {5, 5, 5},如果要选1个5,一共有C(3,1)=3种选法,即100 ...
- leetCode 90.Subsets II(子集II) 解题思路和方法
Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...
- LeetCode Problem 90. Subsets II
python solution 123456789101112131415161718192021222324252627 class (object): def subsetsWithDup(sel ...
- leetcode 78. Subsets 、90. Subsets II
第一题是输入数组的数值不相同,第二题是输入数组的数值有相同的值,第二题在第一题的基础上需要过滤掉那些相同的数值. level代表的是需要进行选择的数值的位置. 78. Subsets 错误解法: cl ...
随机推荐
- LOJ#510 北校门外的回忆(找性质+倍增+线段树)
这题一场模拟赛我们出了弱化版(n<=1e6),抄题面给的程序能拿到71分的好成绩 其实后面的29分是加了几个1e9的数据卡人 这糟老头子真是坏得很 正解我们机房看了三天 在这里感谢这篇题解的作者 ...
- js常见的排序算法
最近面试可能会问这些 1,插入排序 function sort(elements){ var res =[elements[0]]; for (var i = 0; i < elements.l ...
- Javascript深入之创建对象的多种方式以及优缺点
1.工厂模式 function createPerson(name) { var o = new Object(); o.name = name; o.getName = function() { c ...
- React之Perf
import Perf from 'react-addons-perf' // ES6语法 var Perf = require('react-addons-perf') // ES5语法针对node ...
- node.js中的文件系统
文件打开操作 fs.open(path, flags[, mode], callback) path: <string>|<Buffer>|<URL> flags: ...
- JS引用类型
a,b都是引用类型,它们实际上指向同一个内存空间,同呼吸共命运
- Jquery Mobile基本元素
移动端框架 安装: CDN: <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jq ...
- TODO 软件测试68题
白盒和黑盒的区别,你是怎么运用的?√ 都是在debug的时候用的.没有实践过真正的白盒. 你是如何做测试分析?√ 主要从功能的实现和性能问题上入手,功能的话以需求和实际使用的流程来分析,性能的话以 ...
- HR算法具体过程
首先研究HR算法在概率分布估计中的实现,我们再考虑如何将其应用于频繁项挖掘中. 一.确定输入数据类型 def generate_uniform_distribution(k): raw_distrib ...
- MySQL数据库基础学习
MySQL基础知识 ----------- MySQL数据库简介 内存:一断电数据就没有了---------数据库:可以实现数据的持久化存储,有完整的管理系统管理,方便查询--------- DB:数 ...