LeetCode Algorithm 797. 所有可能的路径

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 797. 所有可能的路径相关的知识,希望对你有一定的参考价值。

797. 所有可能的路径

Ideas

首先题目要求的所有可能的路径,所以这是一个搜索问题,要搜索所有的状态空间,所以应该用DFS。

我们从0节点出发,深入探索所有可能的下一步路线,直到到达 n - 1 节点或者达到一个曾经已经访问过的节点。

Code

Python

from typing import List
from copy import deepcopy


class Solution:
	def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:
		def dfs(node, path):
			if node == n - 1:
				ans.append(deepcopy(path + [node]))
				return

			for next_node in graph[node]:
				if next_node not in path:
					path.append(node)
					dfs(next_node, path)
					path.pop()

		n = len(graph)
		ans = []
		dfs(0, [])
		return ans


if __name__ == '__main__':
	print(Solution().allPathsSourceTarget(graph=[[4, 3, 1], [3, 2, 4], [3], [4], []]))

以上是关于LeetCode Algorithm 797. 所有可能的路径的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 797. 所有可能的路径

LeetCode 797. 所有可能的路径

LeetCode 797. 所有可能的路径(dfs) / 881. 救生艇(双指针,贪心) / 295. 数据流的中位数(对顶堆)

LeetCode 797. 所有可能的路径

LeetCode 797. 所有可能的路径

Leetcode 797. All Paths From Source to Target