当前位置: 首页 > news >正文

每天一道leetcode:797. 所有可能的路径(图论中等深度优先遍历)

今日份题目:

给你一个有 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:vector<vector<int>> ans;vector<int> p;void dfs(vector<vector<int>>& graph, int x, int n) { //x用来标记当前所在位置,n标记结尾所在位置if(x==n) //到结尾了,返回{ans.push_back(p);return;}for(auto& y:graph[x]) //遍历临界节点{p.push_back(y);dfs(graph,y,n);p.pop_back();//还原队列,确保其他dfs操作的正确进行}}vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {p.push_back(0);dfs(graph,0,graph.size()-1);return ans;}
};

提交结果

 欢迎大家在评论区讨论,如有不懂的代码部分,欢迎在评论区留言!

http://www.lryc.cn/news/125558.html

相关文章:

  • 创建预留成本中心与指定工厂不一致
  • SCF金融公链新加坡启动会 创新驱动未来
  • 希尔排序【Java算法】
  • 互联网发展历程:从布线到无线,AC/AP的崭新时代
  • Vue3 Axios网络请求简单应用
  • day-18 代码随想录算法训练营(19)二叉树 part05
  • 【数据结构OJ题】移除链表元素
  • centos 安装 virtualbox
  • Java8之Optional类的基本使用
  • LinuxPTP时间同步
  • 【Django】Task1安装python环境及运行项目
  • 00 - 环境配置
  • R语言实现计算净重新分类指数(NRI)和综合判别改善指数(IDI)
  • 【面试总结】八股①
  • AI绘画 | 一文学会Midjourney绘画,创作自己的AI作品(快速入门+参数介绍)
  • MongoDB 数据库详细介绍
  • Qt在mac安装
  • STM32 F103C8T6学习笔记1:开发环境与原理图的熟悉
  • 【Linux命令详解 | ps命令】 ps命令用于显示当前系统中运行的进程列表,帮助监控系统状态。
  • “超越传统的HTTP请求:深度解析Axios,打造前端开发的终极利器“
  • 【Tomcat】tomcat的多实例和动静分离
  • Python爬虫IP代理池的建立和使用
  • Java面试题(dubbo)
  • JVM源码剖析之Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded异常
  • 使用PDF文件入侵任何操作系统
  • 强训第32
  • vue3 setup+Taro3 调用原生小程序自定义年月日时分多列选择器,NutUI改造
  • git命令使用
  • 每日记--前端解决方案--el-select下拉样式-el-option内容过长-鼠标悬停到文字不修改光标样式-设置透明
  • Windows系统Git安装教程(详细Git安装过程)