【算法】并查集JS模板
记录一下 并查集 的 js 类写法
class UnionFind { constructor(size) { this.fa = []; this.size = size; this.init(); } // 初始化 每个元素的父节点为自身 init() { for(let i = 0; i < this.size; i++) { this.fa[i] = i; } } // 递归找到根节点,同时进行路径压缩 find(x) { if(x === this.fa[x]) { return x; } this.fa[x] = this.find(this.fa[x]); return this.fa[x]; } // 合并 x, y 直到各自的根节点, 其中一个的指向另一个 merge(x, y) { let fx = this.find(x); let fy = this.find(y); if(fx !== fy) { this.fa[fx] = fy; } } // 获取集合数量 getCount() { let count = 0; for(let i = 0; i < this.size; i++) { if(this.fa[i] === i) { count++; } } return count; } }
下一篇:
数据库中的数据类型长度(理解)