接下来开始图论了,先来个深搜~
797. 所有可能的路径
思路:邻接表的深度优先搜索。
class Solution:
def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:
self.result = []
self.path = [0] # 注意1:从源节点开始
n = len(graph)
self.dfs(graph, 0, n-1) # 注意2:0~n-1
return self.result
def dfs(self, graph: List[List[int]], x: int, target: int):
# graph: 邻接表;x:当前节点;n:终点
# 确定终止条件
if x == target:
self.result.append(self.path[:]) # 注意3 ``:`创建浅拷贝避免被修改
return
# 迭代x节点的所有链接的节点
for i in graph[x]:
self.path.append(i)
self.dfs(graph, i, target)
self.path.pop()
昨天断了一天,可耻!今天偷个懒,就刷一题吧,别完美主义~ 第6天打卡!