zoukankan      html  css  js  c++  java
  • 90. Subsets II

    https://leetcode.com/problems/subsets-ii/#/description

    Given a collection of integers that might contain duplicates, nums, return all possible subsets.

    Note: The solution set must not contain duplicate subsets.

    For example,
    If nums = [1,2,2], a solution is:

    [
      [2],
      [1],
      [1,2,2],
      [2,2],
      [1,2],
      []
    ]
    

    Sol 1:

    Iteration.

    Sort first.

    class Solution(object):
        def subsetsWithDup(self, nums):
            """
            :type nums: List[int]
            :rtype: List[List[int]]
            """
            
            # iterately 
            res = [[]]
            nums.sort()
            for num in nums:
                res += [item + [num] for item in res if item + [num] not in res]
            return res

    Sol 2:

    DFS.

    class Solution(object):
        def subsetsWithDup(self, nums):
            """
            :type nums: List[int]
            :rtype: List[List[int]]
            """
            
            # DFS
            
            res = []
            nums.sort()
            self.dfs(nums, 0, [], res)
            return res
        
        def dfs(self, nums, index, path, res):
            res.append(path)
            for i in range(index, len(nums)):
                if i > index and nums[i] == nums[i-1]:
                    continue
                self.dfs(nums, i+1, path+[nums[i]], res)

    Similar question:

    78. Subsets

  • 相关阅读:
    HTML
    JavaScript-DOM
    Visual Studio Usage
    Char 05 使用提供程序
    Char 04 运行命令
    Char 03 使用帮助系统
    char 02 初识 Powershell
    Char 01 PowerShell
    Linux Nginx
    Linux SSLH
  • 原文地址:https://www.cnblogs.com/prmlab/p/7152041.html
Copyright © 2011-2022 走看看