相关标签
一、题目要求
二、题解和代码实现
1.题解
2.代码实现
代码如下(示例):
class Solution {
List<List<Integer>> ans = new ArrayList<>();//最终返回
ArrayList<Integer> cur = new ArrayList<>();//用于存储每个路径
int n;//数组长度
int[][] g;//存储数组
public List<List<Integer>> allPathsSourceTarget(int[][] graph) {
g= graph;
n = graph.length;
cur.add(0);
allPathsSourceTargetDfs(0);
return ans;
}
private void allPathsSourceTargetDfs(int u) {
if (u == n-1){//当找到末尾下标时
ans.add(new ArrayList<>(cur));//添加进最终返回列表
return;
}
for (int next : g[u]) {//遍历数组graph[next]的值
cur.add(next);//存储进路径中
allPathsSourceTargetDfs(next);//递归,当加入到最终列表后,就会回溯回来
cur.remove(cur.size()-1);//这时候要删除刚刚加入cur的next,直到剩下cur中留下0
}
}
}