Leetcode 78. Subsets
来源:互联网 发布:tomcat修改端口号 编辑:程序博客网 时间:2024/06/05 05:50
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:
[ [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+recursiveclass 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+recursiveclass 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; }};
0 0
- LeetCode 78. Subsets
- [LeetCode]78.Subsets
- LeetCode --- 78. Subsets
- [Leetcode] 78. Subsets
- [leetcode] 78.Subsets
- 【leetcode】78. Subsets
- Leetcode 78. Subsets
- 78. Subsets LeetCode
- [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
- Hdu-5921 Binary Indexed Tree(数位DP)
- Lua学习笔记——C语言与Lua的交互
- 这是开始
- ToolBar报错:AppCompat does not support the current theme features
- 使用Java语言,使用System.in输入以下各个变量的值,并按照公式计算得出结果。 公式为: 4/3*(r+34)-9*(a+b*c)+(3+d*(2+a))/(a+b*d)
- Leetcode 78. Subsets
- poj3461 Oulipo
- 编写程序接收一个ASCII码(从0至128),然后显示输入ASCII码所代表的字符。 注意: (1)能够对1个或多个输入的ASCII码进行处理; (2)对于输入的非ASCII码进行判定和排除。
- TCP相关面试题总结
- 11.3.6
- poj2406 Power strings
- CF 526D Om Nom and Necklace
- 利用java语言编写程序显示图案“java”
- poj3630 Phone List