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]
.
class Solution(object):
def permuteUnique(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if len(nums) < 2:
return [nums]
nums.sort()
ret = []
saved = None
for x in xrange(len(nums)):
if nums[x] == saved:
continue
saved = nums[x]
for y in self.permuteUnique(nums[:x] + nums[x+1:]):
ret.append([nums[x]] + y)
return ret