news 2026/4/18 5:15:03

代码随想录 684.冗余连接

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录 684.冗余连接

这道题也是并查集基础题目。

1.并查集可以解决的问题:

(1)判断两个节点是否在一个集合。

(2)将两个节点添加到一个集合中。

2.题目要求:对于一个无向图,返回一条可以删去的边,使得结果图是一个有着N个节点的树(即,只有一个根节点)。如果有多个答案,则返回二维数组中最后出现的边。

3.思路:可以从前向后遍历每一条边(因为优先让前面的边连上),边的两个节点如果不在同一个集合,就加入集合(即同一个根节点)。

(1)如下图所示,节点a和节点b不在同一个集合,那么就可以将两个节点连接在一起。

(2)如果边的两个节点已经出现在同一个集合里,则说明这条边的两个节点已经连在一起了,再加入这条边一定就出现环了,如下图所示。

4.注意:题目已说明该图是在树的基础上添加一条边得到,因此只会有一条冗余边,因此可以在遇到同一个根的两个节点后直接返回即可。

附代码:

class Solution { private int[] p; public int[] findRedundantConnection(int[][] edges) { int n = edges.length; p = new int[n]; for(int i = 0;i < n;i++){ p[i] = i; } for(int i = 0;;i++){ //无限循环,会一直执行到找到冗余边并返回,所以该方法一定有返回值(因为树的性质保证了该方法一定有一条冗余边) //若加上i < n条件,则编译器会认为如果循环内所有if(pa == pb)条件都不满足,那么循环会正常结束,此时循环结束后就没有返回值 //编译器在编译时只做静态代码分析,不执行程序逻辑推理 //编译器认为条件判断里的return只是可能返回,若加上i < n,有限循环中还需要在下面加一个return条件 int pa = find(edges[i][0] - 1); //因为节点编号从1开始,所以要 - 1做数组映射 int pb = find(edges[i][1] - 1); if(pa == pb){ return edges[i]; } p[pa] = pb; } } private int find(int x){ if(p[x] != x){ p[x] = find(p[x]); } return p[x]; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 0:49:12

8、UNIX和Linux文件操作与保护指南

UNIX和Linux文件操作与保护指南 在UNIX和Linux系统中,文件操作和保护是非常重要的技能。下面将详细介绍文件和目录的创建、操作、链接以及文件保护的相关内容。 1. 文件和目录操作 1.1 创建目录 在UNIX和Linux系统中,可以使用 mkdir 命令创建新目录。例如,在当前目录下…

作者头像 李华
网站建设 2026/4/17 15:32:36

18、高级 shell 编程实用指南

高级 shell 编程实用指南 1. 文件处理与数据完整性检查 在当前目录中,如果存在同名文件, split 命令会覆盖 xaa 文件。接收到的文件可以合并后进行 uudecode 操作,以恢复原始文件 bigdata 。不过, uudecode 只能去除单个文件的页眉和页脚,无法处理文件中间插入…

作者头像 李华
网站建设 2026/4/15 16:43:51

19、高级Shell编程与正则表达式实用指南

高级Shell编程与正则表达式实用指南 1. 杂项实用工具 在处理文件时,不同操作系统的文件结构可能存在差异。当需要在UNIX系统和非UNIX系统之间进行文件转换时,可以使用 dd 命令。例如,某些系统要求文件以固定大小的块序列形式组织,或者使用与ASCII不同的字符集。 dd 命…

作者头像 李华
网站建设 2026/4/18 1:09:48

acer电脑也可以用下面命令调查电池报告——宏基笔记本用的三洋电池-recent usage显示最近的使用情况-Usage history显示一段时间的-但是不是所有的日期,估计有些丢失了-估计因为重

acer电脑也可以用下面命令调查电池报告——宏基笔记本用的三洋电池-recent usage显示最近的使用情况-Usage history显示一段时间的-但是不是所有的日期,估计有些丢失了-估计因为重装系统有关。-重装破解系统没有序列号 powercfg/batteryreport Battery report COMPUTER NAME …

作者头像 李华
网站建设 2026/4/16 20:18:28

Gemini 3.0 Pro 的幻觉:gemini cli 可以“/context add“添加上下文

对比下来&#xff0c;还是Chatgpt 更了解 gemini cli 的使用。 Gemini 告知可以通过 /context add 实现上下文超长背景信息的使用&#xff0c;我信以为真&#xff0c;还煞有介事列举了优缺点和对比。结果Chatgpt对此予以否认&#xff1a;国内AI应该学习antigravity, gemini cli…

作者头像 李华