企业网站建设(信科网络),扬州市城乡建设局招标网站,汽配网站开发,网站备案期间完全关闭么今日份题目#xff1a;
给你一个有 n 个节点的 有向无环图#xff08;DAG#xff09;#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出#xff08;不要求按特定顺序#xff09;
graph[i] 是一个从节点 i 可以访问的所有节点的列表#xff08;即从节点 i 到节…今日份题目
给你一个有 n 个节点的 有向无环图DAG请你找出所有从节点 0 到节点 n-1 的路径并输出不要求按特定顺序
graph[i] 是一个从节点 i 可以访问的所有节点的列表即从节点 i 到节点 graph[i][j]存在一条有向边。
示例1 输入graph [[1,2],[3],[3],[]]
输出[[0,1,3],[0,2,3]]
解释有两条路径 0 - 1 - 3 和 0 - 2 - 3
示例2 输入graph [[4,3,1],[3,2,4],[3],[4],[]]
输出[[0,4],[0,3,4],[0,1,3,4],[0,1,2,3,4],[0,1,4]]
提示 n graph.length 2 n 15 0 graph[i][j] n graph[i][j] ! i即不存在自环 graph[i] 中的所有元素 互不相同 保证输入为 有向无环图DAG
题目思路
使用深度优先遍历用p数组记录路径。递归遍历结束条件就是到达结尾所以需要一个int数据记录当前所在位置如果到结尾了就返回。
代码
class Solution
{
public:vectorvectorint ans;vectorint p;void dfs(vectorvectorint graph, int x, int n) { //x用来标记当前所在位置n标记结尾所在位置if(xn) //到结尾了返回{ans.push_back(p);return;}for(auto y:graph[x]) //遍历临界节点{p.push_back(y);dfs(graph,y,n);p.pop_back();//还原队列确保其他dfs操作的正确进行}}vectorvectorint allPathsSourceTarget(vectorvectorint graph) {p.push_back(0);dfs(graph,0,graph.size()-1);return ans;}
};提交结果 欢迎大家在评论区讨论如有不懂的代码部分欢迎在评论区留言