Subsets
2015-11-03 10:51
316 查看
题目名称
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:
分析
方法很简单,例如给定[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++代码
总结
两个循环就能搞定,因为每次都会用到上次的结果,所以这也算是迭代法的一种。
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; } };
总结
两个循环就能搞定,因为每次都会用到上次的结果,所以这也算是迭代法的一种。
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解