Subsets
来源:互联网 发布:环保行业 知乎 编辑:程序博客网 时间:2024/06/06 03:30
Subsets
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], []]解析:三种方法都是听经典的方法,递归,迭代,二进制,这道题应该很快写出来的,sad...,对于n个数有2的n次方个结果,n+1的话就把原来的数再加上新的数,之前的保持不变,变成了原来的二倍。
代码:
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>>ans; vector<int>path; subset(ans,nums,0,path); return ans; } void subset(vector<vector<int>>&ans,vector<int>nums,int begin,vector<int>&path) { ans.push_back(path); for (int i=begin; i<nums.size(); i++) { path.push_back(nums[i]); subset(ans,nums,i+1,path); path.pop_back(); } return ; }};
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>>ans; vector<int>path; ans.push_back(path); for (int i=0; i<nums.size(); i++) { int cnt=ans.size(); for (int j=0; j<cnt; j++) { path=ans[j]; path.push_back(nums[i]); ans.push_back(path); } } return ans; } };
Subsets II
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], []]解析:
由于数组中可能存在重复元素,首先把数组进行排序,在求子数组时,如果当前元素与前一个元素相同则跳过当前元素。
代码:
class Solution {public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>>ans; vector<int>path; int begin=0; sort(nums.begin(),nums.end()); dfs(nums,ans,path,begin); return ans; } void dfs(vector<int>&nums,vector<vector<int>>&ans,vector<int>&path,int begin) { ans.push_back(path); int temp=0; for (int i=begin; i<nums.size(); i++) { if ((i!=begin)&&nums[i]==temp) continue; path.push_back(nums[i]); dfs(nums,ans,path,i+1); temp=path.back(); path.pop_back(); } return ; } };
1 0
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Java中23种常见的设计模式
- vsftpd配置教程
- 基于HTML5 SVG可互动的3D标签云jQuery插件
- 【JavaScript】(1)JavaScript语法简单概述及其使用方式
- 布局神器 table-row table-cell
- Subsets
- 算法和数据结构是程序的第一秘诀,缺之算法和数据结构是编程的最大原因
- tomcat7 + redis + nginx 实现session共享
- adb 命令学习(1)
- Sublime Text 使用介绍、全套快捷键及插件推荐
- 创建/修改 android 证书
- Java 正则表达式
- apache ab性能测试工具的使用(Web并发测试)
- C++对象的构建__浅拷贝与深拷贝