数组的子集集合
2018-02-02 12:25
113 查看
这篇文章是寻找数组的所有子集的集合,例如nums=[1,2],子集集合为[[],[1],[2],[1,2]]。这个题目来自于leetcode78. Subsets。
一,动态规划思想:
状态:前面i个数的子集集合res1
状态转移方程:前面i+1个数的子集集合res2 = 前面i个数的子集集合res1 + res1所有项添加第i+1个数的集合cur
代码:
简写:
二、位操作:对于数组[1,2,3],可以用一个下标0和1表示是否选择该数字,0表示未选择,1表示选中,那么每一组3个0和1的组合表示一种选择,3位共有8种选择。
一,动态规划思想:
状态:前面i个数的子集集合res1
状态转移方程:前面i+1个数的子集集合res2 = 前面i个数的子集集合res1 + res1所有项添加第i+1个数的集合cur
代码:
res = [[]] for num in nums : for temp in res[:] : x = temp[:] x.append(num) res.append(x) return res
简写:
res = [[]] for num in nums: res += [item+[num] for item in res] return res
二、位操作:对于数组[1,2,3],可以用一个下标0和1表示是否选择该数字,0表示未选择,1表示选中,那么每一组3个0和1的组合表示一种选择,3位共有8种选择。
res = [] for i in range(1<<len(nums)):# 子集总共有多少个集合 tmp = [] for j in range(len(nums)):# 当前子集集合的生成 if i & 1 << j: # 当前子集集合包含第j字符的判断 tmp.append(nums[j]) res.append(tmp) return res
相关文章推荐
- iOS 数组集合操作(交集,并集,差集,子集)
- 给定一个集合(字符数组),打印出它的所有子集
- iOS 数组集合操作(交集,并集,差集,子集)
- 数组---求数组组成的集合的所有子集
- 递归求集合子集(两种方法实现(数组,链表))
- 集合数组使用的区别
- 输出一个集合的所有子集(算法)
- C#数组和集合专题5(Hashtable排序和遍历)
- 集合变数组---------集合变数组
- AngularJS(v1.4.0-rc.1) filter 从数组项中选择一个子集
- 对象集合、对象数组、数组排序工具类
- 求集合的所有子集的算法
- 关于数组或集合中判断存在某个元素
- 第十章 数组与集合 发牌程序 实例代码
- 黑马程序员——java基础之数组与集合之间的点点滴滴
- Swift编程高级教程(三)集合类型-数组
- 数组和集合的相互转换
- java 判断对象是否为空或者传入集合对象的是否为空,以及判断数组的长度
- 3.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端业务逻辑层接口
- 数组 字典 集合