节点间通路

题目链接

节点间通路

题目描述

注意点

  • 图是有向图
  • 节点编号大于等于 0 小于 n
  • 图中可能存在自环和平行边

解答思路

  • 初始想到的是使用广度优先遍历,从start开始,存储每个点所能到达的其他节点集合,直到到达target或者不能到达新的节点为止,需要注意的是,图中可能存在自环和平行边,所以还需要使用一个visited数组存储已经到达过的节点,防止死循环,但是最终还是超时了
  • 注意到在广度优先遍历的过程中寻找每个节点所能到达的相邻节点每次都需要从前往后遍历整个graph数组,这是相当耗时的,为了减少这个过程,使用map存储每个节点所能到达的相邻节点,并且初始就遍历一次graph将map初始化,后续只需要根据map广度寻找每次所能到达的节点即可

代码

class Solution {public boolean findWhetherExistsPath(int n, int[][] graph, int start, int target) {// 存储点对应的有向边Map<Integer, List<Integer>> map = new HashMap<>(n);for (int i = 0; i < graph.length; i++) {if (map.get(graph[i][0]) == null) {List<Integer> list = new ArrayList<>();list.add(graph[i][1]);map.put(graph[i][0], list);} else {map.get(graph[i][0]).add(graph[i][1]);}}boolean[] visited = new boolean[graph.length];Deque<Integer> dq = new ArrayDeque<>();dq.offerLast(start);visited[start] = true;while (!dq.isEmpty()) {int node1 = dq.pollFirst();if (map.get(node1) == null) {continue;}for (int node2 : map.get(node1)) {if (node2 == target) {return true;}if (visited[node2]) {continue;}dq.offerLast(node2);visited[node2] = true;}}return false;}
}

关键点

  • 广度优先遍历的思想
  • 使用visited数组存储哪些节点已经到达过
  • 使用map存储每个节点所能到达的相邻节点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/23337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“新高考”下分班怎么分?

来自安徽的张女士告诉我&#xff1a;上一年孩子升入了高中&#xff0c;但没想到才高一&#xff0c;孩子就面临了一个困难的挑选&#xff1a;312”分班&#xff01; 什么是312”分班呢&#xff1f;许多人或许不明白&#xff0c;便是要求学生在高一入学时&#xff0c;针对于3门必…

服务器数据恢复—raid5阵列磁盘坏道离线导致数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌x3850 X5服务器&#xff0c;服务器上有一组由5块硬盘组建的raid5阵列&#xff08;包含一块热备盘&#xff09;&#xff0c;安装linux操作系统&#xff0c;运行oracle数据库。 服务器故障&#xff1a; 服务器上raid5阵列中两块硬盘由于未…

Vue进阶之Vue无代码可视化项目(四)

Vue无代码可视化项目 左侧栏第一步LeftPanel.vueLayoutView.vuebase.css第二步LayoutView.vueLeftPanel.vue编排引擎smooth-dnd安装创建文件SmoothDndContainer.tsutils.tsSmoothDndDraggable.tsLeftPanel.vue左侧栏 第一步 创建LeftPanel LeftPanel.vue <script setup…

空间数据采集与组织、转换与处理;统计数据、GPS数据、矢量数据、栅格数据、遥感云平台数据、点云数据、多维数据获取及处理

你还在为找不到合适的数据而苦恼吗&#xff1f;你还在面对大量数据束手无策&#xff0c;不知如何处理吗&#xff1f;对于从事生产和科研的人员来说&#xff0c;空间数据的采集与管理是地理信息系统&#xff08;GIS&#xff09;和空间分析领域的关键环节。通过准确高效地采集和管…

层出不穷的大模型产品如何选

目录 1.概述 2.使用体验分享 2.1.功能情况 2.2.内容生成质量 2.3.隐私安全性 2.4.小结 3.独特优势和倾向选择 4.未来发展方向 4.1.技术创新 4.2.可持续可扩展性 4.3.用户体验 4.4.应用场景 4.5.政府赋能 4.6.小结 1.概述 目前市面上的大模型AIGC产品有很多&#…

代码随想录——二叉搜索树中的插入操作(Leetcode701)

题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第7章——连续性

第2 部分&#xff1a;数学分析中的基本概念 (Concepts in Analysis) 7. 连续性(Continuity) 本章首先讨论连续性的直观概念&#xff0c;并介绍与早期数学中常见的函数不同的函数。解释了连续性的定义&#xff0c;并演示了如何使用它来证明函数在一点上连续&#xff0c;以及证…

支付宝推出AI毛发自测工具,上传照片即可自测脱发等级

根据国家卫健委此前公布的数据&#xff0c;我国超过2.5亿人有脱发困扰&#xff0c;平均每6人中就有1人脱发&#xff0c;且近些年来&#xff0c;脱发群体呈年轻化趋势。为了帮助应对“秃”如其来的脱发问题&#xff0c;今日&#xff0c;支付宝发布“AI毛发自测”工具&#xff0c…

Mixly UDP局域网收发数据

一、开发环境 软件&#xff1a;Mixly 2.0在线版 硬件&#xff1a;ESP32-C3&#xff08;立创实战派&#xff09; 固件&#xff1a;ESP32C3 Generic(UART) 测试工具&#xff1a;NetAssist V5.0.1 二、实现功能 ESP32作为wifi sta连接到路由器&#xff0c;连接成功之后将路由器…

代码随想录 day 30

回溯总结&#xff1a; 相当于暴力for循环&#xff0c;其目的用递归控制for循环嵌套的数量。当剪枝时&#xff0c;就可以使得嵌套数量减少。把回溯问题抽象一颗树比较好懂。并且使得代码更简洁。 对于组合问题&#xff0c;什么时候需要startIndex呢&#xff1f; 在一个集合求组合…

计算机网络五层模型,看不懂请你去吃宵夜

大家好&#xff0c;我是徒手敲代码。 今天用最通俗易懂的话&#xff0c;来回答计算机网络五层模型&#xff0c;分别负责什么。 计算机网络的五层模型自底向上分别为物理层、数据链路层、网络层、传输层和应用层&#xff0c;每一层都承担着特定的职责&#xff0c;共同确保数据…

mysql8.0中的mysql.ibd

mysql8.0版本中多了一个mysql.ibd的文件。5.7版本则没有这个文件。 MySQL5.7: .frm文件 存放表结构信息 .opt文件&#xff0c;记录了每个库的一些基本 信息&#xff0c;包括库的字符集等信息 .TRN&#xff0c;.TRG文件用于存放触发器的信 息内容。 在MySQL 8.0之前&#xff0…

Qt for Android 申请摄像头权限

步骤 1. 添加用户权限 AndroidManifest.xml 中新增&#xff08;不添加后面申请选项时不弹窗&#xff09; 或者再Qt Creator中直接添加 2. Qt代码申请权限 Qt自己封装好了一些常用的权限申请&#xff0c; 详情Qt Assistant文档搜索 QPermission查看 #include <QPermi…

关于stm32的软件复位

使用软件复位的目的&#xff1a; 软件复位并不会擦除存储器中的数据&#xff0c;它只是将处理器恢复到复位状态&#xff0c;即中断使能位被清除&#xff0c;系统寄存器被重置&#xff0c;但RAM和Flash存储器中的数据保持不变。 STM32软件复位(基于库文件V3.5) &#xff0c;对…

终于搞懂了!原来vue3中template使用ref无需.value是因为这个

前言 众所周知&#xff0c;vue3的template中使用ref变量无需使用.value。还可以在事件处理器中进行赋值操作时&#xff0c;无需使用.value就可以直接修改ref变量的值&#xff0c;比如&#xff1a;<button click"msg Hello Vue3">change msg</button>。…

买视觉检测设备需要多少钱?

随着工业自动化的发展&#xff0c;其应用范围逐步提高&#xff0c;其中母子图像传感器、CMOS和CCD摄像机、DSP、ARM嵌入式技术、图像处理和模式识别技术的快速发展&#xff0c;有效地推动了视觉检测设备的发展。在机器视觉领域中&#xff0c;常见的就是视觉检测、视觉识别、视觉…

Django里choices字段使用中文使用

如果想要将下面的表格里的内容数字换成对应的内容&#xff1a; 需要更改成这样&#xff1a; 下面是步骤&#xff1a; 在 python 里的 models.py 文件里&#xff0c;创建数据表的时候&#xff0c;用到了 choices class Example(models.Model):name models.CharField(verbose…

领菲linfeeLNF96E多功能电力仪表智能数码液晶显示三相电压电流表

品牌 LINFEE 型号 LNF96E 货号 LNF96E 产地 中国大陆 省份 江苏省 地市 无锡市 装修及施工内容 安装工程 电源电路 交流电表 电表类型 多功能电度表 颜色分类 LNF96E-C,LNF96E-CM,LNF96E-CJ,LNF96E-CK,LNF96E-CJK,LNF96E-CMJK 多功能电力仪表,LNF96E三相多…

图像的IO操作

代码&#xff1a; import cv2 as cvimport matplotlib.pyplot as plt​#读取图像img cv.imread("../data/images/zidane.jpg")​#显示图像#2.1 OpenCVcv.imshow("dili",img)cv.waitKey(0)cv.destroyAllWindows()​#2.2 matplotlibplt.imshow(img[:,:,::-…

优化你的WordPress网站:内链建设与Link Whisper Pro插件的利用

文章目录 内链的重要性WordPress SEO插件&#xff1a;Link Whisper Pro主要功能使用指南下载与安装 结语 在数字营销和网站管理领域&#xff0c;SEO内部优化是提升网站排名、增加流量和提高用户参与度的核心策略。在众多SEO技巧中&#xff0c;内链建设是构建良好网站结构和提升…