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’] 这样应该足够清晰了。
清醒的活在当下,不为往事懊悔。