[LeetCode]78.Subsets
来源:互联网 发布:多线程编程技术 编辑:程序博客网 时间:2024/06/10 14:05
原题:
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], []]这道题就是生成子集的问题,高中知识,子集个数为2^n个。所以我的思路是0-2^n的循环,然后将十进制数对应到二进制,根据二进制的值对应到某个元素是否在某个子集中。详细代码(代码不好,速度有点慢,leetcode上有大神的代码,估计C语言会快一点?):
class Solution(object): def subsets(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ length = len(nums) # size of nums result = [] if length == 0: return result for x in xrange(0, 2**length): s = bin(x) sub = [] n = x # decimal to binary for i in xrange(0, length): if n == 0: break else: if n % 2 == 1: sub.append(nums[i]) n = n / 2 result.append(sub) return result
其中十进制to二进制的代码,求余求商,求出的结果是从低位到高位(对应学的十进制转化二进制的方式,结果从下到上排列),上边用的时候有些许变化:
n = 12print bin(n)while n != 0: print n%2 n = n/2其实python中有十进制到二进制转化的函数: bin()
bin(x)
Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer.
转化为了字符串,10 - 0b1010,注意0b也是字符串的内容,所以真正的二进制字符串是从索引2开始的。
0 0
- LeetCode 78. Subsets
- [LeetCode]78.Subsets
- LeetCode --- 78. Subsets
- [Leetcode] 78. Subsets
- [leetcode] 78.Subsets
- 【leetcode】78. Subsets
- Leetcode 78. Subsets
- 78. Subsets LeetCode
- [leetcode] 78. Subsets
- leetcode 78. Subsets
- Leetcode 78. Subsets
- LeetCode *** 78. Subsets
- LeetCode 78. Subsets
- LeetCode-78.Subsets
- leetcode 78. Subsets
- LeetCode - 78. Subsets
- [LeetCode] 78. Subsets
- 【题解】Leetcode.78.Subsets
- 打印出指定的数字图形
- Oracle查询优化-03操作多个表
- 链表和数组的区别
- 关于Java的全英文博客,值得学习知识和英语非常的有用
- 矩阵下三角元素之和
- [LeetCode]78.Subsets
- 数据库SQL语言语法总结4---数据更新
- 常用正则表达式
- 安卓与JS通信相互调用
- 奇葩的某个类没有被Cglib动态代理,世间仅有
- poj1247
- 删除指定字符
- C++强制类型转换
- vue与angular的区别