java实现:现在有n个城市,城市之间有坐火车达到,但是城市之间的铁路是有方向的,即:[1,2]表示只可以从1到达2, 给定以下城市间的铁路路线设计,请求出给定城市0到城市(n-1)之间的所有路径 示例1: 输入: [[0,1],[0,2],[1,3],[2,3]] 输出: [0,1,3],[0,2,3]
时间: 2023-12-29 22:06:46 浏览: 60
以下是Java实现的代码,使用深度优先搜索(DFS)来解决该问题:
```
import java.util.*;
public class Solution {
public List<List<Integer>> allPathsSourceTarget(int[][] graph) {
List<List<Integer>> res = new ArrayList<>();
dfs(graph, 0, new ArrayList<Integer>(Arrays.asList(0)), res);
return res;
}
public void dfs(int[][] graph, int curr, List<Integer> path, List<List<Integer>> res) {
if (curr == graph.length - 1) {
res.add(new ArrayList<Integer>(path));
return;
}
for (int nei : graph[curr]) {
path.add(nei);
dfs(graph, nei, path, res);
path.remove(path.size() - 1);
}
}
}
```
该代码首先定义了一个allPathsSourceTarget函数,接收参数graph表示城市之间的铁路路线。函数调用了dfs函数,并返回结果列表res。dfs函数有4个参数,graph表示城市之间的铁路路线,curr表示当前所在的城市,path表示从起点到当前城市的路径,res表示所有符合要求的路径列表。如果curr等于终点城市graph.length - 1,就将路径添加到结果列表res中,然后返回。否则,遍历当前城市可以到达的邻居城市,对每个邻居城市调用dfs函数,并将邻居城市添加到路径中。最后,函数将邻居城市从路径中删除,以回溯到上一个状态。
使用上述代码,针对样例输入[[0,1],[0,2],[1,3],[2,3]],函数allPathsSourceTarget的输出为[[0, 1, 3], [0, 2, 3]],正是预期的结果。
阅读全文