function permuteUnique(nums):
nums.sort()
result = []
used = [false] * n
backtrack([], used, result)
return result
function backtrack(current, used, result):
if len(current) == n:
result.append(copy of current)
return
for i from 0 to n-1:
if used[i]:
continue
if i > 0 and nums[i] == nums[i-1] and not used[i-1]:
continue
current.append(nums[i])
used[i] = true
backtrack(current, used, result)
current.pop()
used[i] = false