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

代码随想录算法训练营

力扣684.冗余连接【medium】
力扣.冗余连接Ⅱ【hard】

一、力扣684.冗余连接【medium】

题目链接:力扣684.冗余连接
left =x300
视频链接:代码随想录
题解链接:灵茶山艾府

1、思路

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

    • 如图所示,节点A 和节点 B 不在同一个集合,那么就可以将两个 节点连在一起。
      • 在这里插入图片描述
    • 如果边的两个节点已经出现在同一个集合里,说明着边的两个节点已经连在一起了,再加入这条边一定就出现环了
      • 在这里插入图片描述
  • 题目要求返回最后出现的冗余边。当遍历到冗余边时,之前的边已经构建了连通性,此时检测到冗余的边即为最后一条导致环的边。

  • 时间复杂度: O ( n ∗ α ( n ) ) O(n * \alpha (n)) O(nα(n))

2、代码

class Solution:def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:n = len(edges)p = list(range(n + 1))def find(x:int) -> int:if p[x] != x:p[x] = find(p[x])return p[x]def union(i,j):p[find(i)] = find(j)for a, b in edges:if find(a) != find(b):union(a, b)else:return [a,b]return []     

二、力扣.冗余连接Ⅱ【hard】

题目链接:力扣冗余连接Ⅱ
视频链接:代码随想录

1、思路

  • 冗余的边有两种情况:
    • 入度为2的节点:节点有2个父节点
    • 有向环
  • 太复杂了,跳过
  • 时间复杂度: O ( n ) O(n) O(n)

2、代码

class UnionFind:def __init__(self, n):self.ancestor = list(range(n))def union(self, index1: int, index2: int):self.ancestor[self.find(index1)] = self.find(index2)def find(self, index: int) -> int:if self.ancestor[index] != index:self.ancestor[index] = self.find(self.ancestor[index])return self.ancestor[index]class Solution:def findRedundantDirectedConnection(self, edges: List[List[int]]) -> List[int]:n = len(edges)uf = UnionFind(n + 1)parent = list(range(n + 1))conflict = -1cycle = -1for i, (node1, node2) in enumerate(edges):if parent[node2] != node2:conflict = ielse:parent[node2] = node1if uf.find(node1) == uf.find(node2):cycle = ielse:uf.union(node1, node2)if conflict < 0:return [edges[cycle][0], edges[cycle][1]]else:conflictEdge = edges[conflict]if cycle >= 0:return [parent[conflictEdge[1]], conflictEdge[1]]else:return [conflictEdge[0], conflictEdge[1]]

三、力扣

题目链接:力扣
left =x300
视频链接:代码随想录
题解链接:灵茶山艾府

1、思路

  • 时间复杂度: O ( n ) O(n) O(n)

2、代码



四、力扣

题目链接:力扣
left =x300
视频链接:代码随想录
题解链接:灵茶山艾府

1、思路

  • 时间复杂度: O ( n ) O(n) O(n)

2、代码




文章转载自:

http://7IRtMwwf.sffwz.cn
http://pTqK6GKg.sffwz.cn
http://LnwOZpRh.sffwz.cn
http://78pnS5g0.sffwz.cn
http://J13f9VAA.sffwz.cn
http://DdBbt3sQ.sffwz.cn
http://nlabiaLl.sffwz.cn
http://hDKowojQ.sffwz.cn
http://t2ikJvEm.sffwz.cn
http://R1G63vc9.sffwz.cn
http://pma5vDOw.sffwz.cn
http://JnvOPDE8.sffwz.cn
http://52ZqIhAO.sffwz.cn
http://MsvYVQVm.sffwz.cn
http://6LaRFRbl.sffwz.cn
http://vCwtWNyp.sffwz.cn
http://AHaNpgb5.sffwz.cn
http://2Labckds.sffwz.cn
http://xN47SVoO.sffwz.cn
http://QUx1YS5Z.sffwz.cn
http://l8Bafjfh.sffwz.cn
http://tnCx6rZe.sffwz.cn
http://D4ld8llr.sffwz.cn
http://adKIGAk3.sffwz.cn
http://sYiNpxZI.sffwz.cn
http://N5LBkUVC.sffwz.cn
http://NjdDuDrm.sffwz.cn
http://dIwTsBLX.sffwz.cn
http://3Cdwt9OK.sffwz.cn
http://Ki7UyHML.sffwz.cn
http://www.dtcms.com/a/202363.html

相关文章:

  • Vue响应式系统演进与实现解析
  • 集成思想在算法(目标检测)中的体现
  • Python入门手册:Python简介,什么是Python
  • 操作系统----软考中级软件工程师(自用学习笔记)
  • 使用 GitHub Pages 部署单页面应用教程
  • vue路由小案例
  • Failed to resolve import “echarts“ from “src/views/HistoricalData.vue“.
  • 第 4 章:网络与总线——CAN / Ethernet / USB-OTG
  • 国产视频转换LT6211UX:HDMI2.0转LVDS/MIPI芯片简介,支持4K60Hz
  • File的使用
  • 聚焦开放智能,抢占技术高地 | 2025 高通边缘智能创新应用大赛第五场公开课来袭!
  • React表单开发的瑞士军刀:Formik与Yup实战指南
  • Android7 Input(八)App Input事件接收器InputEventReceiver
  • Visual Studio 2019/2022:当前不会命中断点,还没有为该文档加载任何符号。
  • IP风险画像技术:如何用20+维度数据构建网络安全护城河?
  • Web Scraping vs API:选择正确数据提取方法的终极指南(二)
  • WebSocket心跳机制
  • 深度解析Vue项目Webpack打包分包策略 从基础配置到高级优化,全面掌握性能优化核心技巧
  • hghac集群服务器时间同步(chrony同步)
  • IntentUri页面跳转
  • 高密度服务器机柜散热方案:高风压风机在复杂风道中的关键作用与选型要点
  • AI应用交付厂商F5打造六大解决方案,助用户应对复杂挑战
  • 【razor】回环结构导致的控制信令错位:例如发送端收到 SR的问题
  • 频率非周期性失稳
  • 10.17 LangChain v0.3核心机制解析:从工具调用到生产级优化的实战全指南
  • 鸿蒙开发进阶:深入解析ArkTS语言特性与高性能编程实践
  • C#学习10——泛型
  • 推扫式高光谱相机VIX-N230重磅发布——开启精准成像新时代
  • 动态规划之爬楼梯模型
  • openjdk底层(hotspot)汇编指令调用(五)——内存访问