news 2026/5/6 12:45:30

冗余连接II

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
冗余连接II

本文参考代码随想录

在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。

输入一个有向图,该图由一个有着 n 个节点(节点值不重复,从 1 到 n)的树及一条附加的有向边构成。附加的边包含在 1 到 n 中的两个不同顶点间,这条附加的边不属于树中已存在的边。

结果图是一个以边组成的二维数组 edges 。 每个元素是一对 [ui, vi],用以表示 有向 图中连接顶点 ui 和顶点 vi 的边,其中 ui 是 vi 的一个父节点。

返回一条能删除的边,使得剩下的图是有 n 个节点的有根树。若有多个答案,返回最后出现在给定二维数组的答案。

思路

有如下三种情况,前两种情况是出现入度为2的点,

第三种情况是没有入度为2的点,那么图中一定出现了有向环

classSolution:definit(self,n):self.fathers=[iforiinrange(n+1)]deffind(self,u):ifself.fathers[u]==u:returnu self.fathers[u]=self.find(self.fathers[u])returnself.fathers[u]defisSame(self,u,v):returnself.find(u)==self.find(v)defjoin(self,u,v):# u -> vu=self.find(u)v=self.find(v)ifu==v:returnself.fathers[v]=udefisTreeAfterRemove(self,edge,edges):self.init(len(edges)+1)foreinedges:ife==edge:continueifself.isSame(e[0],e[1]):returnFalseself.join(e[0],e[1])returnTruedefremoveCircleEdge(self,edges):self.init(len(edges)+1)foreinedges:ifself.isSame(e[0],e[1]):returne self.join(e[0],e[1])deffindRedundantDirectedConnection(self,edges:List[List[int]])->List[int]:inDegrees=[0]*(len(edges)+1)twoDegreeVecs=[]foreinedges:inDegrees[e[1]]+=1foreinedges:ifinDegrees[e[1]]==2:twoDegreeVecs.append(e)iflen(twoDegreeVecs)>0:foreintwoDegreeVecs[::-1]:ifself.isTreeAfterRemove(e,edges):returnereturnself.removeCircleEdge(edges)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 14:29:33

Keil5安装教程:STM32芯片支持包手动安装方法

Keil5安装STM32芯片支持包:手把手教你绕过环境配置的“第一道坎” 你有没有遇到过这样的场景? 刚拿到一块新的STM32开发板,兴冲冲打开Keil uVision5,准备新建工程——结果在设备列表里翻来覆去也找不到你的芯片型号。搜索“STM3…

作者头像 李华
网站建设 2026/5/6 6:29:19

零基础学习指南:STLink驱动安装全过程

手把手带你搞定 STLink 驱动安装:从识别失败到稳定调试的完整实战指南 你有没有遇到过这样的场景? 刚拿到一块崭新的 Nucleo 开发板,兴冲冲地插上电脑,打开 STM32CubeIDE,结果弹出一条令人崩溃的提示: “…

作者头像 李华
网站建设 2026/4/28 22:36:10

手把手教程:使用esptool实现加密固件烧录

破解固件安全困局:用esptool构建坚不可摧的加密烧录体系你有没有遇到过这样的情况?产品刚上市,市面上就出现了功能几乎一模一样的“孪生兄弟”——电路板不同,但行为一致。再一深挖,发现对方直接从你的设备里读出了Fla…

作者头像 李华
网站建设 2026/5/6 10:14:22

jlink驱动下载系统学习:建立扎实的使用基础

打好J-Link驱动下载基本功:嵌入式开发的隐形加速器你有没有遇到过这种情况——代码改完,信心满满点下“Download”,结果弹窗冷冰冰地告诉你:“Cannot connect to target”?或者烧录到一半卡住,反复重试、换…

作者头像 李华
网站建设 2026/5/2 8:10:10

Java Web 论坛网站系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

💡实话实说:CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 随着互联网技术的快速发…

作者头像 李华