class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
res = []
def backtrack(curr, counter):
if len(curr) == len(nums):
res.append(list(curr))
return
for num in counter:
if counter[num] > 0:
counter[num] -= 1
curr.append(num)
backtrack(curr, counter)
counter[num] += 1
curr.pop()
backtrack([], Counter(nums))
return res