Leetcode15

Subset Power set

接着上回提到的求子集合的问题,继续说位操作解法。

class Solution:
    def subsets(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        res = []
        for i in range(1<<len(nums)):
            tmp = []
            for j in range(len(nums)):
                # 判断对应位是否为1
                if i & 1 << j:
                    tmp.append(nums[j])
                    
            res.append(tmp)
        
        return res

可以把每一个结果转换为二进制,然后遍历 000 到 111 ,把对应位置为1的元素保留到临时list,最终结果就是全部子集合

比如说 [‘a’, ‘b’, ‘c’] a 代表 第一位为 1 的情况 100,b 代表 第二位为 1 的情况 010,c 代表第三位为 1 的情况,

100 => [‘a’]

101 => [‘a’,‘c’] 

111 => [‘a’, ‘b’, ‘c’] 这样应该足够清晰了。

bitmask

清醒的活在当下,不为往事懊悔。


Recent posts

Leetcode30

ElasticSearch 系列(一)

Mysql 分区表实践

Kafka 入门

Hugo 安装


Related posts

Leetcode30

Leetcode29

Leetcode28

Leetcode27

Leetcode26

Leetcode25

Leetcode24


Archives

2020 (11)
2019 (56)