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

684. 冗余连接

力扣刷题记录

图论 加边法 并查集

684. 冗余连接

思路

遍历每一条边,看是否出现环路即可,如果出现了环路,则表明这个边是多余的,直接返回即可

这个思路跟Kruskal 算法(加边法),最小生成树很像,其中也有一个过程并查集判断是否存在回路,因此新建parent数组表示并查集,遍历每一条边,查两个点的父元素,如果不相同,说明没有形成环路,更新parent数组,做一个并集的操作
反之相同说明已经存在环路直接返回即可

代码
func findParent(parent []int, x int) int{for parent[x] > 0{x = parent[x]}return x
}func findRedundantConnection(edges [][]int) []int {// 克鲁斯卡尔算法 加边法 关键是如何判断回路 并查集parent := make([]int, len(edges) + 1)for _, val := range edges{m := findParent(parent, val[0])n := findParent(parent, val[1])if m != n{// 父元素不相同 可以选择parent[m] = n}else{return val}}return nil
}

时间复杂度:O(n * log n)
空间复杂度:O(n)


http://www.mrgr.cn/news/59502.html

相关文章:

  • 威胁 Windows 和 Linux 系统的新型跨平台勒索软件:Cicada3301
  • 4款免费音频剪辑软件带你开启声音创作之旅
  • Java一些基础代码带你轻松入门
  • Python Q-learning 算法详解与应用案例
  • 关于 Linux 内核“合规要求”与俄罗斯制裁的一些澄清
  • hive初体验
  • w~视觉~合集10
  • 深度学习模型预测控制python tensorflow 实现
  • Rust 力扣 - 3. 无重复字符的最长子串
  • Spring Cache-基于注解的缓存
  • 以蚂蚁借呗、抖音放心借、美团借钱为例,聊聊企业如何计算期末资产收益率
  • C++和OpenGL实现3D游戏编程【连载16】——详解三维坐标转二维屏幕坐标(向量和矩阵操作实战)
  • (六)问题记录,simulink仿真出现模型碰撞后穿越
  • 【ChatGPT】如何利用ChatGPT进行复杂任务的分解
  • 100种算法【Python版】第13篇——埃拉托斯特尼素数筛法
  • 信息安全入门——网络安全威胁
  • list补充
  • apply,call,bind手写
  • 质量漫谈一
  • xss-labs靶场第十七关测试报告
  • 照片怎么转换成pdf?盘点6种图片转pdf格式有效方法,直击要点!
  • 【Spring MVC】响应结果和设置
  • linux学习笔记 常用命令记录
  • cookie 简介
  • GEE app:全球油棕,橡胶,其他树木,灌木,裸地,水的可视化界面
  • 基于STM32F103的FreeRTOS系列拓展·内存管理