[Leetcode] subsets 求数组所有的子集
Given a set of distinct integers, S, 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 S =[1,2,3], a solution is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
题意:求数组的所有子集,子集不用如例子中那样排序。
思路:题中要求子集中非降序排列,所以要先进行排序。方法一是使用DFS遍历。如:[1,2,3] ,依次加入[ ]、[1]、[1,2]、[1,2,3]、[1,3]、[2]、[2,3]、[3]。图形化的说明参见这里。代码如下:
class Solution {
public:
vector<vector<int> > subsets(vector<int> &S)
{
vector<vector<int>> res;
vector<int> midArray;
sort(S.begin(),S.end());
getSubsets(S,,midArray,res);
return res;
}
void getSubsets(vector<int> &S,int beg,vector<int> &midArray,vector<vector<int>> &res)
{
res.push_back(midArray);
for(int i=beg;i<S.size();++i)
{
midArray.push_back(S[i]);
getSubsets(S,i+,midArray,res);
midArray.pop_back();
}
}
};
方法二:使用迭代法,思路:拿res中已经存在的元素和新的组合,然后重新放入res中,先给res中放入一个空元素,然后通过空元素和S中第一个元素结合放入res中,以此类推,参考了Grandyang的博客。如:[1,2,3],最开始是空集,那么我们现在要处理1,就在空集上加1,为[1],结果中位[]和[1],下面处理2,在之前的子集基础上,每个都加个2,可以分别得到[2],[1, 2],那么现在所有的子集合为[], [1], [2], [1, 2],同理处理3的情况可得[3], [1, 3], [2, 3], [1, 2, 3], 再加上之前的子集就是所有的子集合了,代码如下:
class Solution {
public:
vector<vector<int> > subsets(vector<int> &S)
{
vector<vector<int>> res(); //放入空
if(S.size()) return res;
sort(S.begin(),S.end());
for(int i=;i<S.size();++i)
{
int midSize=res.size();
for(int j=;j<midSize;++j) //实时结合
{
res.push_back(res[j]);
res.back().push_back(S[i]);
}
}
return res;
}
};
在牛客网上,之前通过,现在显示如下,吐槽一下。

Felix对给定一个集合,求出这个集合所有的子集(所谓子集,就是包含原集合中的一部分元素的集合)进行了总结。
[Leetcode] subsets 求数组所有的子集的更多相关文章
- [Leetcode 90]求含有重复数的子集 Subset II
[题目] Given a collection of integers that might contain duplicates, nums, return all possible subsets ...
- [Leetcode] subsets ii 求数组所有的子集
Given a collection of integers that might contain duplicates, S, return all possible subsets. Note: ...
- [Leetcode 78]求子集 Subset
[题目] Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The ...
- [Leetcode 216]求给定和的数集合 Combination Sum III
[题目] Find all possible combinations of k numbers that add up to a number n, given that only numbers ...
- Leetcode之回溯法专题-90. 子集 II(Subsets II)
Leetcode之回溯法专题-90. 子集 II(Subsets II) 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入 ...
- Leetcode之回溯法专题-78. 子集(Subsets)
Leetcode之回溯法专题-78. 子集(Subsets) 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = ...
- [LeetCode] Find Peak Element 求数组的局部峰值
A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ ...
- 78 Subsets(求子集Medium)
题目意思:求解一个数组的所有子集,子集内的元素增序排列eg:[1,3,2] result:[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]思路:这是一个递推的过程 [] ...
- LeetCode:Subsets I II
求集合的所有子集问题 LeetCode:Subsets Given a set of distinct integers, S, return all possible subsets. Note: ...
随机推荐
- haystack+Elasticsearch搜素引擎
搜索引擎原理 通过搜索引擎进行数据查询时,搜索引擎并不是直接在数据库中进行查询,而是搜索引擎会对数据库中的数据进行一遍预处理,单独建立起一份索引结构数据. 我们可以将索引结构数据想象成是字典书籍的索引 ...
- Centos7安装FastDFS
离线安装包准备: 将相关的安装包上传到 /usr/local 目录,安装包下载 并解压到当前目录 1.安装 gcc yum install -y gcc gcc-c++ 2.安装 perl yum i ...
- PHP实现SMTP邮件的发送实例
当你还在纠结php内置的mail()函数不能发送邮件时,那么你现在很幸运,此时的这篇文章可以帮助到你! php利用smtp类来发邮件真是屡试不爽,我用过很久了,基本上没出过问题.本博客后台,当博主回复 ...
- typecho博客组插件:openSug.js百度搜索框下拉提示免费代码
Typecho候选搜索增强插件:安装openSug插件即可获得带有“搜索框提示”功能的搜索框,让Typecho搜索更便捷! 支持百度.谷歌.雅虎.Yandex.360好搜.UC神马.酷狗.优酷.淘 ...
- 3.2 进程间通信之fifo
一.引言 FIFO常被称为有名管道,不同于管道(pipe).pipe仅适用于“有血缘关系”的IPC.但FIFO还可以应用于不相关的进程的IPC.实际上,FIFO是Linux基础文件类型中的一种,是在读 ...
- queue消息队列
class queue.Queue(maxsize=0) #先入先出 class queue.LifoQueue(maxsize=0) #last in fisrt out class queue. ...
- 前端学习之HTML基础
要点: 理解HTTP请求响应模式及通信规范 HTML的各种标签和常用标签 CSS是用于样式渲染和定位布局 JS将HTML动态化 jquery是JS的高级封装 理解HTTP请求响应模式及通信规范 HTT ...
- JavaSE基础复习---1---2018/9/27
2018/9/27 JavaSE学习笔记-1 目录: Java的起源 Java语言概述 1.Java的起源 现代编程语言的发展,大致可以理解为,机器码语言---汇编语言---C语言---C++语言-- ...
- python基础之socket套接字基础part2
基于UDP的socket 面向无连接的不可靠数据传输,可以没有服务器端,只不过没有服务器端,发送的数据会被直接丢弃,并不能到达服务器端 1 #客户端 2 import socket 3 ip_port ...
- 查看sql 作业明细及运行记录
--查看作业明细及状态 select j.name 'Job名', j.description '描述', j.ENABLED job_enabled, cast(js.last_run_date a ...