leetcode刷题-47全排列2
题目
给定一个可包含重复数字的序列,返回所有不重复的全排列。
思路
其思路与46题完全一致,但是需要与组合总和2题一般,在同一层取出重复元素。因此可以在每一层设置一个set()类型,将访问过的元素放入其中,禁止相同元素在同一层被提取。
实现
class Solution: def permuteUnique(self, nums: List[int]) -> List[List[int]]: result = [] def backtrack(num, tmp): if not num : result.append(tmp) return visited = set() for i in range(len(num)): if num[i] in visited: continue backtrack(num[:i] + num[i+1:], tmp + [num[i]]) visited.add(num[i]) backtrack(nums, []) return result