博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Subsets
阅读量:4607 次
发布时间:2019-06-09

本文共 2077 字,大约阅读时间需要 6 分钟。

Given a set of distinct integers, 
nums, return all possible subsets (the power set).

Example:

Input: nums = [1,2,3]Output:[  [3],  [1],  [2],  [1,2,3],  [1,3],  [2,3],  [1,2],  []]

code1:

  recursion:对于个数字都有拿与不拿两种情况;如果拿后面对应一种情况,如果不拿后面又对应一种情况,可用recursion

class Solution{private:    void subsets(int start,vector
&nums,vector
&tmp,vector
> &res) { if(start==nums.size()) { res.push_back(tmp); return ; } tmp.push_back(nums.at(start)); subsets(start+1,nums,tmp,res); tmp.pop_back(); subsets(start+1,nums,tmp,res); return ; }public: vector
> subsets(vector
& nums) { if(nums.empty()) return {}; vector
> res; vector
tmp; subsets(0,nums,tmp,res); return res; }};

code2:

  对于{1,2,3}这个数组

  1. 首先空集{}肯定是一个子集(因为空集是任何集合的子集),此时res中有一个元素为{}
  2. 对于元素1,res就是{}和{1}
  3. 对于元素2,把前面的res中的每个元素中加上2,就得到含有2的所有的情况
  4. ......
class Solution{public:    vector
> subsets(vector
& nums) { if(nums.empty()) return {}; vector
> res; vector
tmp; res.push_back(tmp); for(int i=0;i

code3:

  位运算;每个元素都可能出现或不出现,故每个元素有两种情况,所以对于{1,2,3}来讲,结果数组中共有2^3=8中情况。每个子集的序号的二进制表示,把是1的位对应原数组中的数字取出来就是一个子集,八种情况都取出来就是所有的子集了

出来就是一个子集,八种情况都取出来就是所有的子集了,参见代码如下:

  1 2 3 Subset
0 F F F []
1 F F T 1
2 F T F 2
3 T T F 1,2
4 F F T 3
5 T F T 1,3
6 F T T 2,3
7 T T T 1,2,3
class Solution{public:    vector
> subsets(vector
& nums) { if(nums.empty()) return {}; int size=1<
> res(size); for(int i=0;i
>j)&0x01) res.at(i).push_back(nums.at(j)); } return res; }};

 常见的位操作:

转载于:https://www.cnblogs.com/tianzeng/p/10896970.html

你可能感兴趣的文章
Jquert data方法获取不到数据,显示为undefined。
查看>>
ssm项目中 数据库和资源的备份
查看>>
HDU5950【矩阵快速幂】
查看>>
在线C++编译器
查看>>
C#中各种serialization的比较
查看>>
P2617 Dynamic Rankings
查看>>
工作学习常识1
查看>>
github开发
查看>>
Emacs学习笔记(13):在Emacs中打开pdf
查看>>
flask模板应用-空白控制 --
查看>>
学习过程笔记 7月上
查看>>
ASP.NET WebAPI String 传值问题
查看>>
【2017-3-1】冒泡排序
查看>>
[转载]后缀数组算法总结
查看>>
pandas数据结构练习题(部分)
查看>>
NOI2016 区间 【线段树】
查看>>
第二阶段团队绩效评估
查看>>
.net第三方数据库物理卡号同步功能实现
查看>>
机器学习02_逻辑回归作业(附加)
查看>>
zstu.4189: 逻辑运算(构建 && 前缀表达式入门)
查看>>