【题目】

【代码】

class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
n=len(nums)
ans=[]
def dfs(first=0):
if first==n:
ans.append(nums[:])
for i in range(first,n):
nums[first],nums[i]=nums[i],nums[first]
dfs(first+1)
nums[i],nums[first]=nums[first],nums[i]
dfs()
return ans
【方法2】

class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
res=[]
path=[]
end=len(nums)
used=[False]*len(nums)
depth=0
def dfs(path,depth):
if depth==len(nums):
res.append(path[:])
return
for index in range(end):
if used[index]==True:
continue
used[index]=True
path.append(nums[index])
dfs(path,depth+1)
path.pop()
used[index]=False
dfs(path,0)
return res
该博客介绍了两种使用深度优先搜索(DFS)算法来生成整数列表的全排列的方法。第一种方法直接交换数组元素并递归,第二种方法通过记录已使用和路径来避免重复。这两种方法都是为了解决组合优化问题,适用于需要列出所有可能排列的场景。
452

被折叠的 条评论
为什么被折叠?



