Description
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
Example
Input: [1,1,2]
Output:
[
[1,1,2],
[1,2,1],
[2,1,1]
]
Submissions
这道题的解题思路即在上一题的基础上添加去重操作,因此我首先对nums进行了排序,这是为了在遍历nums元素有相同数字时可以跳过。之后与上一题全排列思想一致,采用递归,依次遍历nums,固定当前遍历的nums[i],去全排列剩余数字序列,最后将nums[i]分别插入到每个排列中合并即可。
实现代码如下:
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
nums.sort()
res=[]
if len(nums)<=1:
return [nums]
for i in range(len(nums)):
if i>0 and nums[i]==nums[i-1]:
continue
p=self.permuteUnique(nums[:i]+nums[i+1:])
for j in p:
res.append([nums[i]]+j)
return res