Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
[1,1,2] have the following unique permutations:
[1,1,2], [1,2,1], and [2,1,1].
Python:
class Solution(object):
def permuteUnique(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if nums == None:
return []
elif len(nums) < 2:
return [nums]
result = []
self.dfs(sorted(nums), [], result)
return result
def dfs(self, nums, tmp, result):
if len(nums) == 0:
result.append(tmp)
for i in range(len(nums)):
if i >= 1 and nums[i] == nums[i - 1]:
continue
self.dfs(nums[: i] + nums[i + 1 :], tmp + [nums[i]], result)