通过递归,然后根据条件当当前元素的下标小于数组长度的时候,可以把他放到结果中。

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        def dfs(i,path,result):

            if i <= len(nums):
                result.append(path[:])

            for j in range(i,len(nums)):                
                dfs(j+1,path+[nums[j]],result)
        if len(nums)==0:
            return [[]]
        result=[]
        dfs(0,[],result)
        return result

迭代方法,每次将数组nums中的元素与答案res子集中已经存在的数组进行组合。
!!!注意这种方法

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        res=[[]]
        for i in nums:
            res=res+[[i]+ num for num in res]
        return res