【LeetCode】78. 子集 python实现

在这里插入图片描述

解题思路

  • 回溯算法,解集不能包含重复的子集
  • 累加所有子集的不重复的全排列

python 代码

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:    
        ret = []
        trace = []
        ret.append([])
        for i in range(len(nums),0,-1):
            self.backtrace(nums,i,0,trace,ret)
        return ret

    def backtrace(self,nums,p,start,trace,ret):
        if len(trace) == p:
            ret.append(trace[:])
            return
        
        for i in range(start,len(nums)):
            trace.append(nums[i])
            self.backtrace(nums,p,i+1,trace,ret)
            trace.pop()

s = Solution()
result = s.subsets([1,2,3])
print(result)

在这里插入图片描述

发布了222 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42247922/article/details/104712815