题目:
题解:
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
def dfs(x):
if x == len(nums) - 1:
res.append(list(nums)) # 添加排列方案
return
dic = set()
for i in range(x, len(nums)):
if nums[i] in dic: continue # 重复,因此剪枝
dic.add(nums[i])
nums[i], nums[x] = nums[x], nums[i] # 交换,将 nums[i] 固定在第 x 位
dfs(x + 1) # 开启固定第 x + 1 位元素
nums[i], nums[x] = nums[x], nums[i] # 恢复交换
res = []
dfs(0)
return res