Leetcode 78. Subsets
2017-01-31 14:41
465 查看
Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,3], a solution is:
s思路:
1. 方法1:双重for+recursive的backtracking.在主程序里,长度从0-n可变为for循环,在helper()中,每个位置的数可变为for循环,从左侧位置深入到右侧位置为recursive实现。思路简单清晰
2. 方法2:用双重for还是比较冗长,发现自己第一次刷的时候直接一个for就解决了。因为不控制长度,每次直接把cur放在结果中,而不用判断长度是否满足条件,代码更妙!
Note: 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], [] ]
s思路:
1. 方法1:双重for+recursive的backtracking.在主程序里,长度从0-n可变为for循环,在helper()中,每个位置的数可变为for循环,从左侧位置深入到右侧位置为recursive实现。思路简单清晰
2. 方法2:用双重for还是比较冗长,发现自己第一次刷的时候直接一个for就解决了。因为不控制长度,每次直接把cur放在结果中,而不用判断长度是否满足条件,代码更妙!
//方法1:双重for+recursive class Solution { public: void helper(vector<int>& nums,vector<vector<int>>&res,vector<int>& cur,int len,int idx){ if(len==0){ res.push_back(cur); return; } for(int i=idx;i<nums.size();i++){ cur.push_back(nums[i]); helper(nums,res,cur,len-1,i+1); cur.pop_back(); } } vector<vector<int>> subsets(vector<int>& nums) { // vector<vector<int>> res; int n=nums.size(); for(int len=0;len<=n;len++){ vector<int> cur; helper(nums,res,cur,len,0); } return res; } }; //方法2:单个for+recursive class Solution { public: void helper(vector<int>& nums,vector<vector<int>>&res,vector<int>& cur,int idx){ res.push_back(cur); for(int i=idx;i<nums.size();i++){ cur.push_back(nums[i]); helper(nums,res,cur,i+1); cur.pop_back(); } } vector<vector<int>> subsets(vector<int>& nums) { // vector<vector<int>> res; int n=nums.size(); vector<int> cur; helper(nums,res,cur,0); return res; } };
相关文章推荐
- LeetCode 78: Subsets
- Leetcode 78 Subsets
- [LeetCode] 78. Subsets
- LeetCode 78 [Subsets]
- leetcode-78-Subsets
- LeetCode: 78. Subsets
- LeetCode - 78 - Subsets(求数组全部子集)
- Leetcode-78. Subsets
- 两种回溯方法解决子集问题的思路 leetcode 78. Subsets
- leetcode 78 :Subsets
- 【LeetCode】78. Subsets
- leetcode 78-Subsets
- Leetcode 78 Subsets
- LeetCode 78:Subsets
- [leetcode] 78. Subsets
- leetcode_78——Subsets(基于DFS的递归,基于同质的递推)
- LeetCode 78 Subsets (DFS 或 状态压缩)
- <LeetCode OJ> 78 / 90 Subsets (I / II)
- leetcode: 78. Subsets
- leetcode 78:Subsets