Problem
Given a collection of distinct integers, return all possible permutations.
Algorithm
Very classical problem, using backtracking method.
Code
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
ans = []
visit = nums.copy()
L = len(visit)
for i in range(L):
visit[i] = 0
buf = nums.copy()
def dfs(d: int, n: int):
if d >= n:
ans.append(buf.copy())
return
for i in range(n):
if visit[i] == 0:
visit[i] = 1
buf[d] = nums[i]
dfs(d+1, n)
visit[i] = 0
dfs(0, L)
return ans