解题思路
排序+回溯搜索+剪枝
python 代码
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
trace = []
res = []
visit = [0]*len(nums)
nums.sort()
self.backtrace(nums,trace,res,visit)
return res
def backtrace(self,nums,trace,res,visit):
if len(trace)==len(nums):
res.append(trace[:])
return
for i in range(len(nums)):
if visit[i]==1:
continue
if i > 0 and nums[i] == nums[i - 1] and visit[i - 1]==0:
continue
visit[i]=1
trace.append(nums[i])
self.backtrace(nums,trace,res,visit)
trace.pop()
visit[i]=0
s = Solution()
result = s.permuteUnique([1,1,2])
print(result) #