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], [2,1,1] ]
Subscribe to see which companies asked this question
import copy
class Solution(object):
def __init__(self):
self.result = []
def handle_permute(self,nums,total):
if total == []:
self.result.append(nums)
return
else:
temp = []
for i in range(len(total)):
if (nums + [total[i]]) not in temp:
total_temp = copy.deepcopy(total)
del total_temp[i]
self.handle_permute(nums + [total[i]],total_temp)
temp.append(nums + [total[i]])
def permuteUnique(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
self.handle_permute([],nums)
return self.result
这一道题对重复出现的数字作了限制,解决的思路是,在递归的过程中,如果发现该种组合已经出现过了,则不递归,剪掉这一支