【LeetCode】90. 子集 II python实现

在这里插入图片描述

解题思路

  • 回溯算法
  • 题目要求解集不能包含重复的子集,所以要设置start

python 代码

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

    def backtrace(self,nums,n,start,trace,ret):
        if len(trace)==n:
            if sorted(trace[:]) not in ret:
                ret.append(sorted(trace[:]))
            return

        for i in range(start,len(nums)):
            trace.append(nums[i])
            self.backtrace(nums,n,i+1,trace,ret)
            trace.pop()

s = Solution()
result = s.subsetsWithDup([1,2,2])
print(result)
发布了248 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

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