原题:
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
分析:
首先从列表的第一个元素开始,将其放到第一位;然后copy列表,将该元素删掉,在新得到的列表中一次将元素填在后面
代码:
def permute(self, nums: list) -> list:
i = len(nums)
for j in range(0,i):
test = nums.copy()
del test[j]
l = len(test)
for h in range(0,l):
self.append([nums[j],test[h],test[(h+1)%l]])
return self
self =[]
nums=[1,2,3]
print(permute(self,nums))
注意:
在删掉列表中的元素时,删掉的应该是拷贝的列表,否则如果直接将一个列表通过赋值语句代替原列表的话,删掉的时候原列表也会跟着改变
效果: