Leetcode Subsets
来源:互联网 发布:淘宝卖家导航 编辑:程序博客网 时间:2024/05/16 04:42
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], []]
第一个想到的就是递归大法,代码如下:
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> result; vector<int> temp; sub(nums,result,temp,0); return result; } void sub(vector<int>& nums,vector<vector<int>>& result,vector<int>& temp,int start) { result.push_back(temp); for(int i=start;i<nums.size();i++) { temp.push_back(nums[i]); sub(nums,result,temp,i+1); temp.pop_back(); } }};
递归必然可以转换为迭代,一般来说,迭代的开销比递归中的函数调用成本小,所以迭代更有效。迭代一般要通过栈结构,但本题的迭代特别有意思,迭代代码如下:
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> res(1, vector<int>()); int n = nums.size(); if (n == 0) return res; sort(nums.begin(), nums.end()); for (int i = 0; i < nums.size(); i++) { int n = res.size(); for (int j = 0; j < n; j++) { res.push_back(res[j]); res.back().push_back(nums[i]); } } return res; }};
阅读全文
0 0
- 【LeetCode】 Subsets Subsets II
- 【LeetCode】Subsets & Subsets II
- LeetCode Subsets && Subsets II
- LeetCode Subsets && Subsets II
- LeetCode-Subsets & Subsets II
- LeetCode: Subsets
- LeetCode Subsets
- [Leetcode] Subsets
- LeetCode : Subsets
- [LeetCode] Subsets
- Leetcode: Subsets
- Leetcode: Subsets ||
- [leetcode] subsets
- Leetcode - Subsets
- [LeetCode]Subsets
- LeetCode-Subsets
- LeetCode - Subsets
- LeetCode | Subsets
- iOS开发之Runtime初探
- TCP/IP 建立连接、断开连接的过程
- super.getClass()方法调用
- 代码回忆录:ThinkPHP随笔-基于ThinkPHP3.2.3
- 数据库链接超时(默认8小时)报错:MySQLNonTransientConnectionException
- Leetcode Subsets
- ValueAnimation应用
- android面试总结
- 虚拟机上装oracle,cmd窗口输入法有问题,按了U,I,O,P,J,K,L,M这些键为什么不是UIOPJK
- android webview 解决回退重定向的问题
- 28、不一样的C++系列--继承与多态
- Ubuntu下android手机通过usb连接电脑,显示"???????????? no permissions"问题
- 解决reportmachine导出pdf有蓝色底色问题
- SQL 语法概要