subset II
Subsets II
Given a collection of integers that might contain duplicates, nums, 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 nums = [1,2,2]
, a solution is:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
方法一:迭代
class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<int> v;
vector<vector<int>> res; res.push_back(v); //empty set std::size_t prev_size = ;
for(std::size_t i=;i<nums.size();i++)
{
std::size_t size = res.size();
for(std::size_t j=;j<size;j++)
{
if(i== || nums[i] != nums[i-] || j >= prev_size)
{
v.assign(res[j].begin(),res[j].end());
v.push_back(nums[i]);
res.push_back(v);
}
}
prev_size = size;
}
return res;
}
};
方法二:递归
#include <vector>
#include <algorithm>
using std::vector; class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<int> v;
vector<vector<int>> res;
subsetsWithDupCore(res, , nums, v);
return res;
}
private:
void subsetsWithDupCore(vector<vector<int>>& res,int start,vector<int>& nums,vector<int>& v)
{
if(start == nums.size())
{
res.push_back(v);
return;
}
if(v.size() == || nums[start] != v[v.size()-])
{
subsetsWithDupCore(res, start+, nums, v);
} v.push_back(nums[start]);
subsetsWithDupCore(res, start+, nums, v);
v.pop_back();
}
};
subset II的更多相关文章
- [Leetcode 90]求含有重复数的子集 Subset II
[题目] Given a collection of integers that might contain duplicates, nums, return all possible subsets ...
- 子集系列(一) 传统subset 问题,例 [LeetCode] Subset, Subset II, Bloomberg 的一道面试题
引言 Coding 问题中有时会出现这样的问题:给定一个集合,求出这个集合所有的子集(所谓子集,就是包含原集合中的一部分元素的集合). 或者求出满足一定要求的子集,比如子集中元素总和为定值,子集元素个 ...
- Subset II leetcode java
题目: Given a collection of integers that might contain duplicates, S, return all possible subsets. No ...
- [Leetcode 40]组合数和II Combination Sum II
[题目] Given a collection of candidate numbers (candidates) and a target number (target), find all uni ...
- [Leetcode 78]求子集 Subset
[题目] Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The ...
- 子集系列(二) 满足特定要求的子集,例 [LeetCode] Combination, Combination Sum I, II
引言 既上一篇 子集系列(一) 后,这里我们接着讨论带有附加条件的子集求解方法. 这类题目也是求子集,只不过不是返回所有的自己,而往往是要求返回满足一定要求的子集. 解这种类型的题目,其思路可以在上一 ...
- 九章lintcode作业题
1 - 从strStr谈面试技巧与代码风格 必做题: 13.字符串查找 要求:如题 思路:(自写AC)双重循环,内循环读完则成功 还可以用Rabin,KMP算法等 public int strStr( ...
- [Leetcode 39]组合数的和Combination Sum
[题目] Given a set of candidate numbers (candidates) (without duplicates) and a target number (target) ...
- [Leetcode 216]求给定和的数集合 Combination Sum III
[题目] Find all possible combinations of k numbers that add up to a number n, given that only numbers ...
随机推荐
- 翻译,NTLM和频道绑定哈希(EPA)
为了过NTLM 的EPA认证, 参考了这篇文章,现在翻译过来,备查. 如果你知道NTLM,并且需要过EPA, 那么这篇文章一定是你最想知道的. 原文地址: NTLM and Channel Bindi ...
- CDH源代码
CDH Packaging and Tarball Information http://www.cloudera.com/content/cloudera/en/documentation/core ...
- UDP实现一个简易的聊天室 (Unity&&C#完成)
效果展示(尚未完善) UDP User Data Protocol 用户数据报协议 概述 UDP是不连接的数据报模式.即传输数据之前源端和终端不建立连接.使用尽最大努力交付原则,即不保证可靠交付. 数 ...
- WP8.1StoreApp(WP8.1RT)---MessageBox与MessageDialog
在WP7和WP8中,MessageBox是跟WinForm中一样常用的对话框,但是有一个显著的缺点,就是WP7/8中默认的MessageBox是阻塞线程的.也许是由于这个原因,WP8.1/Win8中采 ...
- Java50道经典习题-程序7 处理字符串
题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数.分析:利用while语句,条件为输入的字符不为'\n'. import java.util.*; public class Pr ...
- 2018-2019-2 20165219《网络对抗技术》Exp2 后门原理与实践
2018-2019-2 20165219<网络对抗技术>Exp2 后门原理与实践 实验内容 使用netcat获取主机操作Shell,cron启动 使用Socat获取主机操作Shell, 任 ...
- 多个音频audio2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- KVM性能优化学习笔记
本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...
- Windows安装Node.js报错:2503、2502的解决方法
以管理员身份用msiexec安装 1.以管理员身份运行cmd命令 (Win + X, A) 以管理员身份运行cmd 2.cd到自己msi路径 用msiexec安装 用msiexec安装nodejs
- 【BZOJ2440】[中山市选2011]完全平方数
题意描述 原题 一句话描述: 求第K个不是完全平方数的倍数的数. K≤$10^{9}$ ------------------------------------------ 题解: 首先,直接求第$k ...