LeetCode #90 Subsets II

题目

90. Subsets II


解题方法

Subsets类似可以采用三种办法,本文基于二进制映射的方法进行了去重改进,将output设置为集合set,每次添加一个tuple进去,最后再把tuple都映射成list返回一个嵌套列表即可。


代码

class Solution:
    def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        n = len(nums)
        output = set()
        
        for i in range(2**n, 2**(n+1)):
            bitmask = bin(i)[3:]
            temp = []
            for j in range(n):
                if bitmask[j] == '1':
                    temp.append(nums[j])
            output.add(tuple(temp))
        
        return map(list, output)
posted @ 2020-10-21 10:55  老鼠司令  阅读(46)  评论(0)    收藏  举报