UnionFind
并查集(不相交集合),高效处理集合合并和查询。
函数签名
typescript
function createUnionFind(size: number): UnionFind
interface UnionFind {
find(x: number): number
union(x: number, y: number): boolean
connected(x: number, y: number): boolean
count(): number
getSize(x: number): number
}API 说明
union(x, y): boolean
合并两个元素所属的集合。
时间复杂度:接近 O(1)
connected(x, y): boolean
判断两个元素是否在同一集合。
时间复杂度:接近 O(1)
使用示例
typescript
import { createUnionFind } from '@shared/functions/data-structures/UnionFind'
const uf = createUnionFind(10)
uf.union(0, 1)
uf.union(1, 2)
console.log(uf.connected(0, 2)) // true
console.log(uf.count()) // 8应用场景
- 网络连通性:判断网络是否连通
- 最小生成树:Kruskal 算法
- 图像处理:连通区域标记
- 社交网络:朋友圈划分