题目描述:给定一个 没有重复 数字的序列,返回其所有可能的全排列。
解题思路:回溯法,就是dfs+加上回改当前子节点状态,一次考虑每一位是可以任意一个数,选定一个数之后马上考虑下一位数,这就是dfs,只是Python需要注意,将nums添加到结果当中时,需要进行拷贝,不然返回的数组全是一样的结果,代码如下:
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
res = []
n = len(nums)
def traceback(nums, i):
if i == n -1:
res.append(nums[:])
return
for j in range(i, n):
nums[i], nums[j] = nums[j], nums[i]
traceback(nums, i+1)
nums[i], nums[j] = nums[j], nums[i]
traceback(nums, 0)
return res