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

东莞网站建设推广seo推广专员工作好做吗

东莞网站建设推广,seo推广专员工作好做吗,宿迁发布最新通告,奎文区建设局网站🚀 并查集(Union-Find)详解:原理、实现与优化 并查集(Union-Find)是一种非常高效的数据结构,用于处理动态连通性问题,即判断若干个元素是否属于同一个集合,并支持集合合…

🚀 并查集(Union-Find)详解:原理、实现与优化

并查集(Union-Find)是一种非常高效的数据结构,用于处理动态连通性问题,即判断若干个元素是否属于同一个集合,并支持集合合并操作。它在图算法中(如 Kruskal 最小生成树)、朋友圈统计、网络连通性判断等场景中非常常见。

🧠 并查集的核心功能

  • find(x):查找元素 x 所在集合的代表(也叫“根节点”)
  • union(x, y):将元素 xy 所在的两个集合合并
  • parent[x]:记录每个元素的“父亲”,通过父亲链条找祖先(树结构)

🧩 并查集基本结构

n = 5
parents = list(range(n + 1))  # parents[i] = i,0号位不使用

🔍 基本实现:find 和 union

def find(x):if parents[x] == x:return xelse:return find(parents[x])
def union(x, y):root_x = find(x)root_y = find(y)if root_x == root_y:return Falseparents[root_y] = root_xreturn True

🧠 类比记忆

  • 每个元素的 parent 就像是它的“爸爸”
  • find(x) 就是往上找老祖宗
  • union(x, y) 就是两个家族联姻,把一个家族并进另一个

⚡ 并查集优化技巧(路径优化):路径压缩优化

查询时顺便把路径上所有的节点都指向大族长,一次find后这条路径的深度为1

def find(x):if x != parents[x]:parents[x] = find(parents[x])return parents[x]

🧱 并查集优化技巧(合并优化):按秩合并 & 按大小合并

🔢 按大小合并(Union by Size)

小家族归大家族,大的当族长

size = [1] * (n + 1)def union(x, y):rx, ry = find(x), find(y)if rx == ry:return Falseif size[rx] < size[ry]:parents[rx] = rysize[ry] += size[rx]else:parents[ry] = rxsize[rx] += size[ry]return True

🏷️ 按秩合并(Union by Rank)

辈分高的当族长

rank = [0] * (n + 1)def union(x, y):rx, ry = find(x), find(y)if rx == ry:return Falseif rank[rx] < rank[ry]:parents[rx] = ryelif rank[rx] > rank[ry]:parents[ry] = rxelse:parents[ry] = rxrank[rx] += 1return True

💡 组合使用建议

最推荐的并查集配置是:

路径压缩 + 按秩合并 或 按大小合并

能达到几乎 O(1) 的查询和合并效率。

📚 应用场景

  • Kruskal 最小生成树算法
  • 网络连通性判断
  • 动态连通块个数统计
  • 岛屿数量(LeetCode 200)
  • 冗余连接(LeetCode 684)
  • 朋友圈数量(LeetCode 547)

🎯 总结

术语含义
find(x)找出 x 所属集合的根节点
union(x, y)合并 x 和 y 的集合(若不属于同一集合)
路径压缩加快 find 查询效率
按秩/按大小优化合并策略,防止退化
树的结构集合之间的连接关系

并查集看起来简单,背后其实是极高效的数据结构设计。建议掌握它,并尝试应用到图论、集合问题中去!


🧩 常见练习题

✅ 基础入门题

题号题目名称链接简介
200岛屿数量LeetCode 200判断二维网格中有多少个连通块
684冗余连接LeetCode 684找出图中导致环的边
1319连通网络的操作次数LeetCode 1319判断有多少连通块,以及最少连接次数

🧠 中级应用题

题号题目名称链接简介
1202交换字符串中的元素LeetCode 1202使用并查集形成交换组,对组内排序
721账户合并LeetCode 721通过邮箱合并属于同一用户的账户
323无向图中连通分量的数目LeetCode 323通用连通块计数问题

🔍 进阶与变种题

题号题目名称链接简介
399除法求值LeetCode 399带权并查集:维护节点之间的比例关系
547省份数量(等价朋友圈问题)LeetCode 547判断有多少朋友圈/省份
990等式方程的可满足性LeetCode 990并查集维护等式约束

📌 推荐练习顺序

  1. 200 - 岛屿数量
  2. 684 - 冗余连接
  3. 1319 - 连通网络的操作次数
  4. 547 - 省份数量
  5. 1202 - 字符串交换
  6. 721 - 邮箱合并
  7. 399 - 除法求值
  8. 990 - 等式方程可解性

🧠 建议掌握:

  • 基础并查集结构(find, union
  • 路径压缩优化
  • 带权并查集(维护差值、比例等信息)
  • 一维映射(如坐标 → 编号)
http://www.cadmedia.cn/news/9510.html

相关文章:

  • 网站建设氵金手指下拉国际新闻网
  • 宁波江北区网站推广联系方式b2b电子商务网
  • 杭州网站app开发公司泰安百度推广代理
  • 怎么做卡蜜网站seo投放营销
  • 电子杂志制作app百度seo排名
  • 网站建设的价钱百度关键词排名突然下降很多
  • 静态网页制作实训报告小时seo百度关键词点击器
  • 公司策划书模板广州seo营销培训
  • 网站怎么建设微信支付宝支付功能拼多多运营
  • 建立app上海专业的seo推广咨询电话
  • 养老网站建设合同2023免费b站推广大全
  • wordpress主题适应手机浏览器账号seo是什么
  • 网站建设系统哪家便宜些推广平台排行榜有哪些
  • 网站建设系统平台做网站用什么软件
  • 网站 建设 后台管理程序线上运营的5个步骤
  • 叶县红色家园网站建设福建百度代理公司
  • 新网站的建设工作你对网络营销的理解
  • 营销型网站建设设计百度推广服务费一年多少钱
  • 赣州做网站j2023年第三波疫情9月
  • 开源app开发工具长沙百度快速优化排名
  • 设计一个企业官网的栏目搜索引擎优化的意思
  • 建站工具上市推广网站有效的免费方法
  • 搜索引擎优化平台刷关键词排名seo软件
  • 郑州专业的网站建设公司哪家好怎样制作网页
  • 如何免费制作企业网站建网站需要什么条件
  • 网站建设yuue软文营销的技巧
  • 日照莒县网站建设兼职长沙企业网站设计
  • 网站的tdk指的是什么企业网站建设方案书
  • 教务网络管理系统网络seo培训
  • 国际公司英语翻译网站seo主要是做什么的