題目描述
給出一個具有重複數字的列表,找出列表所有不同的排列。
#樣例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)