输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
列举全部排列, 需要使用回溯的方法, 使用DFS的思路, 将元素逐个放入当前列表中, 直到备选列表中元素为空, 说明所有的元素都已经被使用, 从而得到了一种排列情况. 抛弃掉尾部的元素向上回溯, 探索另一种选择对应的情况.
由于列表中的元素没有重复值, 因此不需要考虑结果的重复问题.
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
results = []
def dfs(path, residual):
if len(residual) == 0:
results.append(path[:])
for i, num in enumerate(residual):
path.append(num)
dfs(path, residual[:i] + residual[i + 1:])
path.pop()
dfs([], nums)
return results