class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
# 记录全部排列解的全局变量
res = []
# tmp记录临时路径
def backtrack(nums, tmp):
# 获得可行解
if not nums:
res.append(tmp)
return
# 生枝
for i in range(len(nums)):
# 这个地方用nums.remove(nums[i])是不可以的
# 因为会影响上面循环中列表的长度和列表里面的有些数值就取不到了
backtrack(nums[:i] + nums[i+1:], tmp+[nums[i]])
backtrack(nums, [])
return res