Subsets
来源:互联网 发布:检查网络的命令 编辑:程序博客网 时间:2024/05/16 09:37
题目名称
Subsets—LeetCode链接
描述
Given a set of distinct integers, 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,3], a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]
分析
方法很简单,例如给定[4,2,1,0]序列:
- 初始化一个二维向量res,用来存储子列,一开始为[[]]。子列中肯定有一个空向量,将其加入到res中,这一步很重要;
- 对于给定数字序列,先将首元素加入,res为[[],[4]];
- 遍历当前的res,对于每一个res中的每个向量,结尾都增加给定序列中的下一个数字,这里是2(对当前res中所有元素push_back(2)得到[2],[4,2],分别排序就是[2],[2,4]),对这个向量排序并push_back到res中,得到[[],[4],[2],[4,2]];
- 重复第3步,直到给定序列中所有元素都被处理。
C++代码
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> res; int size = nums.size(); if(size==0){ return res; } vector<int> zero; res.push_back(zero); for(int i=0;i<size;i++){ //一定要用tempSize这个变量来暂存当前res的大小,因为res的size总是动态变化的 int tempSize = res.size(); for(int j=0;j<tempSize;j++){ vector<int> temp(res[j]); temp.push_back(nums[i]); sort(temp.begin(),temp.end()); res.push_back(temp); } } return res; }};
总结
两个循环就能搞定,因为每次都会用到上次的结果,所以这也算是迭代法的一种。
0 0
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- heritrix3 后台运行job
- 关于CocoaPods安装和使用
- C语言 标准库函数
- ubuntu下修改网卡名称
- 【有人@我】Android中高亮变色显示文本中的关键字
- Subsets
- MyBatis:Mapped Statements collection does not contain value for xxx
- Vim配置
- myeclipse10配置maven
- linux 信号处理函数集合
- android中drawable与bitmap的相互转化
- python问题之requests\packages\urllib3\util\ssl_.py:100: InsecurePlatformWarning
- db2_高性能的sql语句
- 1.4 使用Sqoop从MySQL数据库导入数据到HDFS