class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
nums = sorted(nums)
ans = []
path = []
used = [0] * len(nums)
def backtrack(used):
if len(path) == len(nums):
ans.append(list(path))
return
for i in range(len(nums)):
#used[i-1]判断是0时,是对横向去重,如果为1的为话是纵向去重
if used[i] == 1 or (i > 0 and used[i-1]==0 and nums[i]==nums[i-1]):
continue
path.append(nums[i])
used[i] = 1
backtrack(used)
path.pop()
used[i] = 0
backtrack(used)
return ans