题目描述:
思路:
一个数列[1,2,3,4],进行全排列时,首先交换3、4,成为[1,2,4,3]。之后将2、3互换形成[1,3,2,4]、[1,3,4,2]。首先定住长度为n的数组的前n-1个对第n个进行全排列,之后对第n-1和第n个进行全排列。全排列过程即每轮对两个数进行交换,结果在最后加入结果集合。
思路参考:https://blog.youkuaiyun.com/summerxiachen/article/details/60579623
代码:
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
if len(nums)<2:
return [nums]
res = []
res = self.remo(nums, 0, res)
return res
def chang(self, x, y, nums):
tem = nums[x]
nums[x] = nums[y]
nums[y] = tem
return
def remo(self, nums, loc, res):
if loc == len(nums):
teml = nums.copy()
res.append(teml)
return res
for i in range(loc, len(nums)):
self.chang(loc, i, nums)
res = self.remo(nums, loc+1, res)
self.chang(loc, i, nums)
return res