题目描述
给出一个具有重复数字的列表,找出列表所有不同的排列。
#样例1
输入:[1,1]
输出:
[
[1,1]
]
#样例2
输入:[1,2,2]
输出:
[
[1,2,2],
[2,1,2],
[2,2,1]
]
python实现
#去掉重复的排列
def unique(nums):
begin=0
end=len(nums)
result=[]
if end==0:
return [[]]
fullarray(begin,end,nums,result)
result.sort()
i = 0
while i < len(result) - 1:
if result[i] == result[i + 1]:
del result[i]
else:
i += 1
return result
#递归
def fullarray(begin,end,nums,result):
if begin==end:
k=nums[:]
result.append(k)
else:
for i in range(begin,end):
nums[begin],nums[i] = nums[i],nums[begin]
fullarray(begin+1,end,nums,result)
nums[begin],nums[i] = nums[i],nums[begin]
if __name__=="__main__":
nums=[1,1,2,3,1,2]
allresult=unique(nums)
print(allresult)