首页 > 其他 > 详细

[LC] 47. Permutations II

时间:2019-10-13 09:18:20      阅读:69      评论:0      收藏:0      [点我收藏+]

Given a collection of numbers that might contain duplicates, return all possible unique permutations.

Example:

Input: [1,1,2]
Output:
[
  [1,1,2],
  [1,2,1],
  [2,1,1]
]

Time: O(N!)
Space: O(N)

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        res = []
        if nums is None or len(nums) == 0:
            return res
        self.dfs(nums, 0, res)
        return res
    
    def dfs(self, nums, level, res):
        if level == len(nums):
            res.append(list(nums))
            return
        my_set = set()
        for i in range(level, len(nums)):
            if nums[i] not in my_set:
                my_set.add(nums[i])
                nums[i], nums[level] = nums[level], nums[i]
                self.dfs(nums, level + 1, res)
                nums[i], nums[level] = nums[level], nums[i]

 

[LC] 47. Permutations II

原文:https://www.cnblogs.com/xuanlu/p/11664671.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!