题目描述
https://leetcode-cn.com/problems/subsets/
思路题解
回溯
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
ans=[[]]
def dfs(i,pre):
if i==len(nums):return
ans.append(pre)
for j in range(i+1,len(nums)):
dfs(j,pre+[nums[j]])
for i in range(len(nums)):
dfs(i,[nums[i]])
return ans
二进制
二进制是真的妙啊
https://leetcode-cn.com/problems/subsets/solution/zi-ji-by-leetcode-solution/
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
ans=[[]]
l=len(nums)
n=2**l-1
while n:
t=n
p=[]
for i in range(l):
if t>>i&1==1:p.append(nums[i])
ans.append(p)
n-=1
return ans