美文网首页
[LeetCode]47、

[LeetCode]47、

作者: 河海中最菜 | 来源:发表于2019-08-02 23:02 被阅读0次

题目描述

给定一个可包含重复数字的序列,返回所有不重复的全排列。

示例:

输入: [1,1,2]
输出:
[
[1,1,2],
[1,2,1],
[2,1,1]
]

思路解析:

与46唯一区别,就是给定数组重复,结果数组不准重复。
1、再上一题基础上,判断新的排列是否在数组即可。
2、排序后,检查后一个是否和前一个相等。

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        if not nums or len(nums) == 0:
            return []
        nums.sort()
        res = []
        def helper(nums, temp):
            if not nums:
                res.append(temp)
                return 
            for i in range(len(nums)):
                if i > 0 and nums[i] == nums[i-1]:
                    continue
                helper(nums[:i] + nums[i+1:], temp + [nums[i]])
        helper(nums, [])
        return res
AC47

相关文章

网友评论

      本文标题:[LeetCode]47、

      本文链接:https://www.haomeiwen.com/subject/xnfddctx.html