[LeetCode系列]子集枚举问题[无重复元素]
给定一组数(未排序), 求它们的所有组合可能.
如给定{1 2 3}, 返回:
[ [] [1] [2] [3] [1 2] [1 3] [2 3] [1 2 3] ]
算法思路:
- 对数组排序, 从小到大;
- 令 i = 0, 对已有组合v从后往前进行如下操作
- v的最后1个组合内加入第i个元素;
- 将新组合加入到v中
算法的理解可以通过一个例子来看:
给定S = {1 2 3},
v = [[]]
i = 0, j = 1, v = [[] [1]] // back().push_back(S[0])
i = 1, j = 2, v = [[] [1] | [1 2] [2]] // j = 2, add 2 new elems
i = 2, j = 4, v = [[] [1] [1 2] [2] | [2 3] [1 2 3] [1 3] [3]]
相同颜色前者为原有元素, 后者为增加后的元素.
代码:
class Solution {
public:
vector<vector<int> > subsets(vector<int> &S) {
sort(S.begin(), S.end());
vector<vector<int> > v();
for(int i = ; i < S.size(); ++i) {
int j = v.size();
while(j-- > ) {
v.push_back(v[j]);
v.back().push_back(S[i]);
}
}
return v;
}
};
[LeetCode系列]子集枚举问题[无重复元素]的更多相关文章
- [LeetCode系列]子集枚举问题[有重复元素]
给定一组数(未排序, 可能有重复元素), 求出所有可能的组合. 算法和无重复元素的相似. 唯一需要注意的是, 如果当前的数字和之前的相同, 算法就只会在结尾数字是此数字的组合后加上此数字. 比如现在是 ...
- LeetCode(3):无重复字符的最大子串
本内容是LeetCode第三道题目:无重复字符的最大子串 # -*- coding: utf-8 -*- """ Created on Sun Mar 10 20:14: ...
- LeetCode 第 3 题:无重复字符的最长子串(滑动窗口)
LeetCode 第 3 题:无重复字符的最长子串 (滑动窗口) 方法:滑动窗口 滑动窗口模板问题:右指针先走,满足了一定条件以后,左指针向前走,直到不满足条件. 特点:左右指针的方向是一致的,并且是 ...
- hunnu 11313 无重复元素序列的最长公共子序列转化成最长递增子序列 求法及证明
题目:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11313 湖师大的比赛,见我的另一篇水题题解,这里要说的 ...
- [LeetCode] 219. Contains Duplicate II 包含重复元素 II
Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...
- [LeetCode] 220. Contains Duplicate III 包含重复元素 III
Given an array of integers, find out whether there are two distinct indices i and j in the array suc ...
- LeetCode(3):无重复字符的最长子串
Medium! 题目描述: 给定一个字符串,找出不含有重复字符的 最长子串 的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ...
- LeetCode随缘刷题之无重复字符的最长子串
欢迎评论区交流. package leetcode.day_12_04; /** * 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度. * <p> * 示例1: * &l ...
- 【leetcode算法-中等】3. 无重复字符的最长字串
[题目描述] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 " ...
随机推荐
- 多网卡绑定(bond)
通过以下命令查看bond0的工作状态查询能详细的掌握bonding的工作状态,如这个绑定各网卡的工作状态.主备关系.链路侦测时间[root@ASMTS ~]# cat /proc/net/bondin ...
- Java笔试之输入输出
在校招笔试中,有的时候我们要自己设计输入输出,下面罗列一些常见的输入输出: 首先把输入包加载进来: import java.util.* ; 一 ,输入 1,输入一个整数,浮点数,输入一个数组 : p ...
- HDU 3506 (环形石子合并)区间dp+四边形优化
Monkey Party Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Tot ...
- HDU 5289 尺取
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- 【转】SQL SERVER 2005中如何获取日期(一个月的最后一日、上个月第一天、最后一天、一年的第一日等等)
在网上找到的一篇文章,相当不错哦O(∩_∩)O~ //C#本周第一天 int dayOfWeek = Convert.ToInt32(DateTime.Now.DayOfWeek ...
- 常见浏览器bug(针对IE6及更低版本)及其修复方法
常见bug及其修复方法有以下几种 1.双外边距浮动bug 双外边距浮动bug在IE6及更低版本中常见.所谓双外边距浮动bug是指使任何浮动元素上的外边距加倍.(见下图) 只要将元素的display属性 ...
- C#学习历程(九)[类的定义与声明]
一.C#中类的声明 在C#中必须先声明类,然后才能在程序中使用. 类的声明格式如下: [类的属性] [访问修饰符] class 类名称 [: 父类名]{ [成员修饰符] 类的成员变量或者成员函数 ...
- office在繁体系统下 导入导出 功能灰显的解决方法
当在win7系统使用繁体中文版的office时,或系统是繁体版时,可能会导致office的导入导出功能无法使用 解决方法: 控制面板--区域和语言--格式--中文简体
- 20165202 2017-2018-2 《Java程序设计》第1周学习总结
20165202 2017-2018-2 <Java程序设计>第1周学习总结 教材学习内容总结 Ubuntu环境下安装JDK 简单Java程序编写 反编译器javap.exe Git安装及 ...
- 浅谈title属性与alt属性
XHTML是CSS布局的基础,webjx.com一直强调XHTML知识的学习,重视语义和文档的结构.title 和alt 属性,给我最直观的感受就是,可以提高文档的适应性,并合理提高关键词密度.在XH ...