从二进制位移(循环左移1)进行求一个集合的所有的子集

class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
#一个集合的非空子集的个数为pow(2,n)-1
result=[]
shift = 1
for i in range(0,pow(2,len(nums))):
temp = []
for j in range(0,len(nums)):
flag = (shift<<j)&i
if flag !=0:
temp.append(nums[j])
result.append(temp)
return result
本文介绍了一种使用二进制位移(循环左移1)的算法来求解一个集合的所有子集。通过将集合元素与二进制位的每一位对应,利用位运算实现子集的生成,该方法简洁高效。
200

被折叠的 条评论
为什么被折叠?



