用回溯算法解决,其中不重复用Counter处理
from collections import Counter
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
res = []
n = len(nums)
def backtrack(path, counter):
if len(path) == n:
res.append(path[:])
for x in counter:
if counter[x]>0:
counter[x] -= 1
path.append(x)
backtrack(path,counter)
path.pop()
counter[x] += 1
backtrack([], Counter(nums))
return res