Subset I & II
来源:互联网 发布:java棕色rgb 编辑:程序博客网 时间:2024/05/22 06:49
一:subset I
题目:
Given a set of distinct integers, S, 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 S = [1,2,3]
, a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]链接:https://leetcode.com/problems/subsets/
分析:说白了就是求不同元素所构成的所有子集,这里提供三种方法
(1)递归————较难理解
对结合[1,2,3] 从0结点的1开始,都有选择或者不选,不选为空,放在左子树,选择放在由子树,这样就得到一棵完全二叉树,其中叶子结点就是我们所求。理解代码可以试着从只有1个结点开始思考。
图中与代码有差异,左右刚好相反
(2) 迭代
通过上图我们可以看出,每次都是在原有的子集后面添加新元素S[i] 并加入到result中就会得到另外一个子集,因此可以采用迭代处理。
(3)位操作对于n个元素,每个元素要么加入要么不加入,则会得到一个n位的二进制串,n为二进制串可以看做是一个状态或者说一个子集,每个元素与一位一一对应,状态的大小为1<<n. 对于每个状态j,我们通过判断第k位是否为1,为1则将S[k]加入vec,判断结束,将vec加入result即可。
二:subset II
题目:
Given a collection of integers that might contain duplicates, S, 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 S = [1,2,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], []]链接:https://leetcode.com/problems/subsets-ii/
分析:与unique paths的区别在于允许元素重复,这是当元素重复时,我们会发现每次加入的子集都是上次迭代的子集,因此需要对迭代法略做改进。
- Leetcode Subset I & II
- Subset I & II
- 【leetcode】 subset I、II
- 9.4 subset I and II,
- LeetCode78/90 subset I/II**
- subset II
- Subset I
- LeetCode(90)Subset II
- LeetCode 练习: Subset ii
- 【Leetcode】之Subset II
- leetcode之subset II
- Subset II [Leetcode 解题报告]
- LeetCode 90.Subset II java solution
- [树] [HDU5830] Rikka with Subset II
- subset
- Subset
- Subset
- Subset
- android-自定义Dialog
- Linux下添加新硬盘,分区及挂载
- DSYM结合友盟错误日志联调bug分析错误
- matlab 图片批量读取
- hdu 2871 -Memory Control--线段树
- Subset I & II
- 卸载Source Insight 3时出现"Could not find the INSTALL.LOG"
- opencv画图函数
- 把word转换成pdf方法与应用
- [letecode java] Product of Array Except Self
- HDU 5009 Paint Pearls
- 遍历二叉树
- Android系统自带样式(android:theme)解析
- KMeans笔记 K值以及初始类簇中心点的选取