leetcode 1971. Find if Path Exists in Graph(图中是否存在路径)

LeetCode --- 1971. Find if Path Exists in Graph 解题报告 并查集处理无向图联通问题 阅读详情

在这里插入图片描述
在这里插入图片描述
给出一个无向图,顶点数,边(顶点-顶点),
问顶点source是否能和顶点destination连通(它们之间是否存在路径)。

思路:

以往的找路径一般是建立邻接链表,然后用dfs的方法找。
因为这里不需要具体路径,只需要看source和destination在不在一个group即可。
所以用union find.

初始化时每个node的parent是它自己,然后利用边更新parent,
这里是把edge[1]的root更新成edge[0]的root,
注意一定是parent[root]更新而不是parent[node]本身更新。

最后看source和destination的root是否相同即可。

class Solution {
    public boolean validPath(int n, int[][] edges, int source, int destination) {
        int[] parent = new int[n];
        for(int i = 0; i < n; i++) {
            parent[i] = i;
        }

        //union
        for(int[] edge : edges) {
            int p1 = findRoot(parent, edge[0]);
            int p2 = findRoot(parent, edge[1]);
            
            if(p1 != p2) parent[p2] = p1;
        }
        return findRoot(parent,source)==findRoot(parent,destination);
    }

    int findRoot(int[] parent, int node) {
        int p = node;
        while(parent[p] != p) {           
            p = parent[p];
            parent[p] = parent[parent[p]]; //达到log时间搜索的效果
        }
        return p;
    }
}
【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01 当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。 阅读详情

相关推荐

23. STM32F103C8T6 ADC采集光敏电阻传感器模块光照强度实战

本文详细介绍了如何使用STM32F103C8T6的ADC模块采集光敏电阻传感器的光照强度。通过硬件接线、核心原理讲解、四步代码配置(GPIO、ADC模式、使能校准、数据滤波)以及串口验证,手把手指导完成从模拟信号到数字值的完整实战流程,并重点提示了ADC时钟分频等关键配置要点。

weixin_42300144的博客 219

java_leetcode_1971. 寻找图中是否存在路径_dfs(链式前向星,邻接表),并查集

java_leetcode_1971. 寻找图中是否存在路径_dfs(链式前向星,邻接表),并查集

A_Pathfinder的博客 478

解决Windows无法卸载补丁的实用方法

无法卸载Windows补丁可能是一个棘手的问题,但通过上述方法,你应该能够找到解决方案。无论是通过控制面板、命令提示符还是手动重置Windows更新组件,都有可能成功卸载问题补丁。如果所有方法都无效,系统还原将是一个值得尝试的备选方案。希望这篇文章能帮助你解决无法卸载补丁的问题。

mmoo_python的博客 1万+

LeetCode 1971. 寻找图中是否存在路径

LeetCode 1971. 寻找图中是否存在路径 有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] = [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连接,并且没有顶点存在与自身相连的边。 请你确定是否存在从顶点 source 开始,到顶点 destination 结束的 有效路径 。 给你数组 edges 和整数 n、source 和

<font color="Pink">Tisfy的博客</font> 597

Vivado加上VsCode让你的生活更美好

VsCode与Vivado的灵活使用 引言 ​ 现在大二了,在接触硬件描述语言。Vivado自带的编辑器实在很难用,为了能够“极客”一些,当然是去Google了一下有哪些方法可以取而代之。 ​ 网络上的答案大同小异,基本上都是用的Sublime Text.(我的学长们也几乎都是) 平时码代码的过程中,我习惯与使用VsCode,尤其是在微软收购GitHub之后,Code 简直就是神器了。于是乎…一个...

qq_39498701的博客 10万+

运动目标成像必学:5分钟搞懂keystone变换原理与避坑指南

本文深入浅出地解析了雷达信号处理中的Keystone变换原理,它是解决运动目标距离徙动问题的关键技术。文章通过直观比喻和简化公式,阐述了该变换如何通过变量代换实现距离与慢时间的解耦合,将倾斜轨迹“掰直”,从而提升成像与检测性能。同时,文中重点指出了实际应用中关于大速度场景、插值误差、多目标处理及高阶运动补偿等关键避坑点,为工程实践提供了宝贵指南。

ios99的博客 402

【LeetCode】1971. 寻找图中是否存在路径

day48 这一道题是图论的基本题,分别使用了 「并查集」、「DFS」、「BFS」三种方法,基本都是套模板,以后做到图论相关的题可以回来找模板。【简单】

weixin_43894455的博客 641

<硬件设计> 阻抗设计(二) 使用Si9000计算阻抗

阻抗设计(二) 使用Si9000计算阻抗

杰克拉力船长个人博客 1万+

leetcode:1971. 寻找图中是否存在路径【java的二维数组创建和queue使用】

java 二维表的建立!

小楼一夜听春雨 381

车载导航GPS欺骗

因此,如果我们能够模拟卫星信号,将模拟的信号通过信号发射装置发送给GPS传感器,那么就有可能实现欺骗GPS传感器获取虚假的位置信息,这种技术即SDR(软件无线电,Software Defined Radio)[2]。究其原因,在不使用时钟模块的条件下,HackRF发送信号的频率可能不十分精准,因此GPS传感器接收到信号之后可能无法正常解析GPS信号,因此时钟信号可能是HackRF进行GPS欺骗的关键。2)HackRF是否使用了时钟模块,时钟模块决定了信号发送频率的精准程度,对实验的成败也是至关重要的。

2503_90751789的博客 1324

【部署优化篇三】《DeepSeek边缘计算实战:把目标检测模型塞进树莓派,让AI在巴掌大的设备上“开天眼“》

谁说只有超级计算机才能跑AI?今天咱们就要在树莓派上玩转DeepSeek目标检测,让这个巴掌大的小盒子变成会‘看’世界的智能终端!本文手把手教你从零开始,把最潮的目标检测模型塞进树莓派。全程高能预警,建议准备好你的树莓派4B/5和散热风扇,咱们这就开启边缘计算的魔法之旅!

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1305

leetcode:1971. 寻找图中是否存在路径

题目解析 并查集 因为它是一个双向图,所以我们可以将联通的所有节点加到一个集合中,然后看它们的父节点是否相同

OceanStar的博客 493

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LeetCode 1971. Find if Path Exists in Graph

LeetCode 1971. Find if Path Exists in Graph (Easy) 主要知识点:graph, bfs, dfs, union find;优先级:5

温迪今天刷题了吗 731

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LeetCode 1971. Find if Path Exists in Graph(图的遍历)

文章目录1. 题目2. 解题 1. 题目 There is a bi-directional graph with n vertices, where each vertex is labeled from 0 to n - 1 (inclusive). The edges in the graph are represented as a 2D integer array edges, where each edges[i] = [ui, vi] denotes a bi-directional edge

Michael是个半路程序员 672

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Leetcode】1971. Find if Path Exists in Graph

题目地址: https://leetcode.com/problems/find-if-path-exists-in-graph/ 给定一个nnn个顶点的无向图,问某两个点之间是否有路径。 可以用并查集。代码如下: public class Solution { int[] p; int find(int x) { if (p[x] != x) { p[x] = find(p[x]); }

数学、算法爱好者的博客 796

《中英双解》leetCode Find if path exists in graph

There is abi-directionalgraph withnvertices, where each vertex is labeled from0ton - 1(inclusive). The edges in the graph are represented as a 2D integer arrayedges, where eachedges[i] = [ui, vi]denotes a bi-directional edge between vertexuia...

weixin_46272350的博客 482

Leetcode 1971. Find if Path Exists in Graph (并查集判断图是否联通)

class unionFindSet { private: vector<int> p; public: unionFindSet(int n) { p.resize(n); for (int i = 0; i < n; i++) { p[i] = i; } } int find(int x) { if (p[x] != x) { p...

wwxy1995的博客 497

Leetcode 1971. Find if Path Exists in Graph [Python]

BFS 从start遍历到end,每一次que弹出节点是end,返回true,否则,把此节点加入到seen set中,并入队。遍历完成后,未找到end节点,代表和start直接或间接相连的节点中没有end节点。返回false。注意特殊情况,只有一个节点时。 class Solution: def validPath(self, n: int, edges: List[List[int]], start: int, end: int) -> bool: if n == 1:ret

sinat_30403031的博客 399

leetcode刷题笔记-graph

399.Evaluate Division class Solution(object): def calcEquation(self, equations, values, queries): graph = collections.defaultdict(set) for i, vertices in enumerate(eq...

Sengo的博客 492

1971. Find if Path Exists in Graph

1971. Find if Path Exists in Graph 有一个具有 n个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] = [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连接,并且没有顶点存在与自身相连的边。 请你确定是否存在从顶点 start 开始,到顶点 end 结束的 有效路径 。 给你数组 edges 和整数 n、start和end,如

weixin_44560620的博客 441

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 352

LeetCode Hot 100 链表专题 三· 3 题(Java)

收录题目:2. 两数相加、19. 删除链表的倒数第 N 个结点、24. 两两交换链表中的节点。 统一结构:① 题目分析与解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结。 贯穿三题的两条主线:虚拟头结点 dummy(统一处理头结点被修改的场景)与 指针修改顺序(避免断链、丢引用)。

2401_88612756的博客 481

LeetCode 每日一题 2026/11/2-2026/11/8

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 174

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等) 题目描述: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: - s = s1 + s2 + ... + sn - t = t1 + t2 + ... + tm - |n - m| <= 1 - 交错 是 s1 + t

huayimenghan的博客 197

LeetCode 1861. 旋转盒子|Go 双指针解法

j >= 0,如果写成j>0,会漏掉第 0 列,最左侧石头处理失败旋转矩阵行列互换:原 m 行 n 列 → 结果 n 行 m 列,make 数组长度不要写反旋转公式m-1-i:是原总行数 m,不是 n!很容易写成n-1-i区分:本题和轮转数组(189)分组循环不一样!189:所有元素固定移动 k 步,需要 gcd 分组1861:障碍物分割成多个独立段,石头向段末尾挤,用双指针更合适。

2503_92676540的博客 175
上一篇: leetcode 232. Implement Queue using Stacks(用栈实现队列)
下一篇: NanoDet 源码解读(inference)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值