并查集(Union-Find)高频题

共 20 题
#

1. 并查集的基础操作与复杂度中路径压缩+按秩合并为什么能把单次操作摊还到 O(α(n)),只压缩不按秩合并在最坏情况下的退化?

A 路径压缩是多余的
B 只压缩不按秩合并也 O(α(n))
C 按秩合并可省
D 路径压缩+按秩合并摊还 O(α(n)),只压缩不按秩合并最坏可能退化到 O(n) ✓ 正确答案
#

2. 冗余连接(LeetCode 684)中为什么加边时发现两端已在同一集合即可判定该边多余?

A 两端同集合与环无关
B 加边前若两端已在同一集合则此边成环,是冗余边 ✓ 正确答案
C 需先求所有连通分量
D 并查集无法检测环
#

3. 二维并查集中如何把网格坐标 (i,j) 映射到一维下标,扫描陆地时如何合并上下左右相邻节点?

A 坐标映射一维下标 i*n+j,扫描陆地合并上下左右相邻陆地 ✓ 正确答案
B 无需坐标映射
C 只能合并对角线
D 映射为一维后无法合并
#

4. 岛屿数量(200),并查集合并相邻陆地后如何统计连通分量,与 DFS/BFS 的时间空间对比

A 陆地初始独立,union 成功减 1,最终分量数即岛屿数 ✓ 正确答案
B 分量数=总格子数
C 并查集无法统计分量
D 复杂度高于 DFS
#

5. 省份数量(LeetCode 547)中合并朋友关系后如何统计连通分量个数?

A 省份数=城市数
B 合并朋友关系后,union 成功减 1,最终分量数即省份数 ✓ 正确答案
C 矩阵无法用并查集
D 需先拓扑排序
#

6. 被围绕的区域(LeetCode 130)中为什么把边界 O 先并入“虚拟节点”再遍历,能避免把连通到边界的 O 翻转?

A 无需区分边界
B 边界 O 直接翻转
C 虚拟节点用于统计数量
D 边界 O 先并入虚拟节点,非虚拟集合的 O 才翻转,避免误翻边界连通的 O ✓ 正确答案
#

7. 账户合并(LeetCode 721)中如何以邮箱为节点合并账户,并按字典序输出?

A 以账户为节点
B 以邮箱为节点并查集,同一账户邮箱合并,按根分组排序输出 ✓ 正确答案
C 无需邮箱映射
D 输出无需排序
#

8. 除法求值(LeetCode 399)中带权并查集如何维护 a/b 的比值关系,路径压缩时权值如何累乘?

A 路径压缩时权值不更新
B 带权并查集存到父权值,find 时累乘、union 时按比值更新根权值 ✓ 正确答案
C 查询时直接看权值
D 权值只存根
#

9. 连通网络的操作次数(LeetCode 1319)中最少操作数 = 连通分量数 - 1 的推导?

A 无需检查缆线数
B 操作数 = 分量数
C 缆线不足时返回 -1,否则操作数 = 连通分量数 - 1 ✓ 正确答案
D 操作数固定为 n-1
#

10. 情侣牵手(LeetCode 765)中最少交换次数 = N - 连通分量数,并查集如何计数“错位环”?

A 最少交换次数 = N - 连通分量数,并查集统计坐错形成的错位环 ✓ 正确答案
B 交换次数 = N
C 无需并查集
D 错位环与交换次数无关
#

11. 交换字符串中的元素(LeetCode 1202)中把可交换下标并入同一集合后,如何分组排序还原字符串?

A 无需分组
B 直接交换相邻即可
C 可交换下标并查集分组,组内字符排序放回得字典序最小 ✓ 正确答案
D 组内字符不能重排
#

12. 检查边长度限制的路径是否存在(LeetCode 1697),离线排序查询与边的套路,如何保证查询结果的正确性?

A 边按权升序、查询按 limit 升序,增量加边后判断连通,保证正确性 ✓ 正确答案
B 需在线处理每个查询
C 边加入顺序无关
D 并查集无法增量
#

13. Kruskal 最小生成树中的并查集中为什么需要“按秩合并+路径压缩”加速环检测,与 Prim 的选择依据?

A 并查集 O(α) 环检测(需路径压缩+按秩合并),Kruskal 适合稀疏图、Prim 适合稠密图 ✓ 正确答案
B 并查集无需优化
C Kruskal 适合稠密图
D Prim 也需边排序
#

14. 种类并查集(食物链)中如何用三倍扩展域维护捕食与同类关系,模 3 带权并查集为何等价

A 带权并查集无法表达捕食
B 只需两倍扩展域
C 三倍扩展域用 3n 节点显式表达三类关系,模 3 带权并查集用权值编码,两者等价 ✓ 正确答案
D 扩展域与带权不等价
#

15. 启发式合并维护集合信息中小集合并入大集合(small-to-large)如何维护 size/和等统计,总复杂度 O(n log n)

A 每元素最多移动一次
B 大集合并入小集合更快
C 小集合并入大集合,每元素移动次数 O(log n),总 O(n log n) ✓ 正确答案
D 复杂度 O(n²)
#

16. 相似字符串组(LeetCode 839)中如何枚举两两相似关系并合并,复杂度如何分析?

A 无需两两枚举
B 相似当且仅当恰好一个位置不同
C 复杂度 O(n·L)
D 两两判断相似(不同位置≤2)并 union,复杂度 O(n²·L) ✓ 正确答案
#

17. 按字典序排列最小的等效字符串(LeetCode 1061)中等价类并查集后如何取每类最小字符?

A 取同类最大字符
B 直接替换为 'a'
C 无需并查集
D 等价字符并查集合并,替换时取同类最小字符 ✓ 正确答案
#

18. 判断二分图(LeetCode 785),扩展域/带权并查集如何判定奇环,与染色法的对比?

A 并查集不能检测奇环
B 染色法无法判二分图
C 二分图无奇环,扩展域/带权并查集用异色合并+矛盾检测,与染色法等价 ✓ 正确答案
D 二分图可有奇环
#

19. 动态连通性中在线加边查询是否连通如何用并查集回答,配合撤销(可撤销并查集)的离线场景?

A 撤销无需记录操作
B 可撤销并查集也需路径压缩
C 在线加边不能在线查询
D 在线加边用普通并查集,可撤销并查集用按秩合并+操作栈(关闭路径压缩) ✓ 正确答案
#

20. 反向加边中删除边问题如何倒序转为加边并查集,配合离线的处理顺序

A 删除题先建最终状态再逆序回放,删除变加边,是离线技巧 ✓ 正确答案
B 并查集支持直接删边
C 必须正序处理
D 无需标记被删边