LeetCode Union-Find(并查集) 专题(二)

LeetCode Union-Find(并查集) 专题(二)


并查集 Union-Find 的适用情况

如何考虑使用并查集

从并查集的功能入手, 显然题目要求有 “查询”, “合并” 操作时可以考虑使用。重点是合并。(单考虑查询用map即可)并且注意到这种合并应该是不需要记录合并路径的。(这是由于路径压缩会破坏原有路径, 破坏了原有的树结构)

从我做到的题来看, 并查集的使用具有很明显的特点。 一是经常和BFS或DFS相似。即看上去可以用BFS或者DFS解决。 二是具有数据分类的特性。 这里的分类比较抽象。 对于一些问题可能会直接给出一个关系对向量或者一个关系矩阵, 有些问题则比较隐晦一些。 例如下面将要谈到的区间上的合并(线段合并),合并的条件是隐性的: 相邻的数字都是同类。


并查集的优势

的确很多并查集的题目都可以利用BFS + DFS得到解决。 但是有一些问题是不能够或者说不便于利用BFS或DFS。 下面举一个例子。

ProblemA: 给出一个大小为n*n的关系矩阵, 要求输出合并后的连通块数。

对于上面的问题, DFS 和 BFS 完全可以胜任。 复杂度即为 O(N2) .
反而用并查集不能够做到很好。 之后的详细的复杂度分析可以知道, 即使使用并查集除非做了很好的优化, 否则达到 O(1)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值