[leetcode][回溯] Subsets
来源:互联网 发布:android 内置mysql 编辑:程序博客网 时间:2024/06/08 06:45
题目;
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], []]
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int> > res;if (nums.empty()) return res;vector<int> oneSubset;sort(nums.begin(), nums.end());//排序subsetsCore(nums, 0, oneSubset, res);return res;}private: void subsetsCore(vector<int>& nums, int start, vector<int> oneSubset, vector<vector<int> > &res){if (start == nums.size()){res.push_back(oneSubset);return;}subsetsCore(nums, start + 1, oneSubset, res);//start所指元素不在subset中oneSubset.push_back(nums[start]);subsetsCore(nums, start + 1, oneSubset, res);//start所指元素在subset中}};
注:由于题目中指明集合元素是“ distinct integers”,所以不必担心因含有重复元素而产生重复的子集的情况
下面是另一种思路,好像这种方法更通用一些,对于去重也比较方便
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int> > res;if (nums.empty()) return res;vector<int> oneSubset;sort(nums.begin(), nums.end());subsetsCore(nums, 0, oneSubset, res);return res; }private: void subsetsCore(vector<int> &nums, int start, vector<int> oneSubset, vector<vector<int> > &res){ res.push_back(oneSubset); for(int i = start; i < nums.size(); ++i){ oneSubset.push_back(nums[i]); subsetsCore(nums, i+1, oneSubset, res); oneSubset.pop_back(); } }};
0 0
- [leetcode][回溯] Subsets
- [leetcode][回溯] Subsets II
- 【VIP】【leetcode题解】【回溯】【97.5】【M】Subsets
- 【leetcode题解】【回溯】【54】【M】Subsets II
- LeetCode-78-Subsets(回溯法)-Medium
- LeetCode-90-Subsets II(回溯)-Medium
- leetcode 78. Subsets-数组子集|回溯算法
- (回溯法)LeetCode#78. Subsets
- (回溯法)LeetCode#90. Subsets II
- LeetCode-90-Subsets II 暴力dfs回溯
- [LeetCode] Subsets(!!!!!回溯&&迭代&&位操作)(to be updated)
- 78.leetcode Subsets(medium)[回溯递归循环调用combination即可]
- 回溯法,subsets
- 【LeetCode】 Subsets Subsets II
- 【LeetCode】Subsets & Subsets II
- LeetCode Subsets && Subsets II
- LeetCode Subsets && Subsets II
- LeetCode-Subsets & Subsets II
- 5.1
- erlang 实现psrs 并行排序算法
- C++ io操作
- 第十一周 项目二:(1) 职员有薪水了
- 关于linux下粘贴位(sticky位)
- [leetcode][回溯] Subsets
- hibernate调用mysql存储过程
- lvs、haproxy、nginx 负载均衡的比较分析
- SpringMVC事务失效的解决方法
- [TM4C123单片机实战] 两路ADC检测,短路报警
- 分数->小数
- AVD Manager.exe启动出错的解决方法
- Binary Tree Inorder Traversal - LeetCode 94
- hibernate 调用存储过程