给定一个可包含重复数字的序列 nums
,按任意顺序 返回所有不重复的全排列。
示例 1:
输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]]
示例 2:
输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
代码部分
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
resoult=[]
path=[]
nums.sort()
used=[False]*len(nums)
def backtracking(used):
if len(nums)==len(path):
resoult.append(path[:])
return
for i in range(len(nums)):
if (i>0 and nums[i]==nums[i-1]) and used[i-1]==True:
continue
if used[i]==True:
continue
used[i]=True
path.append(nums[i])
backtracking(used)
used[i]=False
path.pop()
backtracking(used)
return resoult