题目描述
给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)
graph [i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点 graph[i][j] 存在一条有向边
样例描述

思路
图的遍历 + DFS爆搜
- 有向无环图(不需要vis存储已经遍历的结点)
- 直接dfs进行图的遍历即可,注意先加入初始0结点
代码
class Solution {
int g[][];
List<List<Integer>> res = new ArrayList<>();
List<Integer> path = new ArrayList<>();
public List<List<Integer>> allPathsSourceTarget(int[][] graph) {
g = graph;
int n = g.length;
path.add(0);
dfs(0, n - 1);
return res;
}
public void dfs(int idx, int n) {
if (idx == n) {
res.add(new ArrayList<>(path));
return;
}
//有向图遍历,遍历其所有连接的路径
for (int u: g[idx]) {
path.add(u);
dfs(u, n);
path.remove(path.size() - 1);
}
}
}
本文介绍了一种使用DFS解决LeetCode 797题的方法,该题目要求找出在一个有向无环图(DAG)中从节点0到节点n-1的所有路径。文章提供了题目描述、样例解析、解题思路和Java代码实现。

768

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



