#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param num int整型一维数组
# @return int整型二维数组
#
class Solution:
def permuteUnique(self, num: List[int]) -> List[List[int]]:
n = len(num)
ans = set()
path = []
def backtrack(nums, i):
if i == n:
ans.add(tuple(path.copy())) # 用元组存储,保证可哈希
return
for x in nums:
path.append(x)
new_nums = nums.copy()
new_nums.remove(x) # 移除已选元素
backtrack(new_nums, i + 1)
path.pop()
backtrack(num, 0)
# 先转换为列表,再排序(按字典序),最后每个元组转回列表
sorted_ans = sorted(ans)
return [list(item) for item in sorted_ans]