90. Subsets II
来源:互联网 发布:vc和vb的功效 编辑:程序博客网 时间:2024/06/05 22:53
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], []]
Subscribe to see which companies asked this question
简单的backtracking,主要在于判断条件,一开始简单加了一句if(nums[i]==nums[i-1]) continue; 发现把其他分支也剪掉了。
应该写成if(i!=index&&nums[i]==nums[i-1]) continue; 意即在本层已经压入过相同的数了,后面的数不必再操作。
还有就是一个提升时间的小tips:对于{}的问题,一开始在主函数里对res压入一个{},然后调用dfs的时候结束条件为if(index>=nums.size()) return; 然后在循环中每次向res中压入一个解,一开始这样做的时间是9ms,但是如果将压{}的过程合并到dfs中的话,结果就是6ms。
class Solution {public: vector<vector<int>> res; vector<vector<int>> subsetsWithDup(vector<int>& nums) { sort(nums.begin(),nums.end()); vector<int> sub; dfs(nums, sub, 0); return res; } void dfs(vector<int>& nums, vector<int>& sub, int index){ if(index>nums.size()) return;//因为压入的是上一轮的解,因此当index=nums.size的时候也应该执行函数,不能return res.push_back(sub);//在这里压入上一轮的解 for(int i=index; i!=nums.size(); i++){ if(i!=index&&nums[i]==nums[i-1]) continue; sub.push_back(nums[i]); dfs(nums, sub, i+1); sub.pop_back(); } }};
0 0
- 78. Subsets && 90. Subsets II
- 78. Subsets 90. Subsets II
- 78. Subsets &90. Subsets II
- 78. Subsets,90. Subsets II
- 78. Subsets && 90. Subsets II
- 78. Subsets 90. Subsets II
- 78. Subsets & 90. Subsets II
- 90. Subsets II
- [LeetCode]90.Subsets II
- [Leetcode] 90. Subsets II
- LeetCode --- 90. Subsets II
- 90. Subsets II
- [leetcode] 90.Subsets II
- 【leetcode】90. Subsets II
- Leetcode 90. Subsets II
- 90. Subsets II
- 90. Subsets II LeetCode
- leetcode 90. Subsets II
- Angularjs cors 用get、post方法与springmvc后传递json数据的配置
- transition标签、scale标签和inset标签
- 【玩转SQLite系列】(五)SQLite数据库优化
- 计算机网络的运输层
- 一片落叶的独白
- 90. Subsets II
- kettle 中出现的问题集锦
- 【Unity&DragonBones】像素角色人物骨骼动画教程(四)蒙皮骨骼动画使得角色动作更流畅
- IOS端静态代码无Bug?只需4步!
- 【玩转SQLite系列】(六)SQLite数据库应用案例实现历史搜索记录
- 微信小程序学习笔记(3)--------框架之配置
- Andorid源码下载
- 使用Artifactory搭建本地maven仓库
- 彩笔笔记2016/12/5——改写equals