From 46c0b8d596c0d986a2fbe1963d14f7808f15d675 Mon Sep 17 00:00:00 2001 From: jerryfishcode <91447694+jerryfishcode@users.noreply.github.com> Date: Tue, 28 Sep 2021 01:02:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E684.=20=E5=86=97=E4=BD=99?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=20JavaScript=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0684.冗余连接.md | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/problems/0684.冗余连接.md b/problems/0684.冗余连接.md index bfbdeba9..654ef469 100644 --- a/problems/0684.冗余连接.md +++ b/problems/0684.冗余连接.md @@ -303,6 +303,43 @@ func findRedundantConnection(edges [][]int) []int { ## JavaScript ```js +const n = 1005; +const father = new Array(n); +// 并查集里寻根的过程 +const find = u => { + return u == father[u] ? u : father[u] = find(father[u]); +}; + +// 将v->u 这条边加入并查集 +const join = (u, v) => { + u = find(u); + v = find(v); + if(u == v) return; + father[v] = u; +}; + +// 判断 u 和 v是否找到同一个根,本题用不上 +const same = (u, v) => { + u = find(u); + v = find(v); + return u == v; +}; + +/** + * @param {number[][]} edges + * @return {number[]} + */ +var findRedundantConnection = function(edges) { + // 并查集初始化 + for(let i = 0; i < n; i++){ + father[i] = i; + } + for(let i = 0; i < edges.length; i++){ + if(same(edges[i][0], edges[i][1])) return edges[i]; + else join(edges[i][0], edges[i][1]); + } + return null; +}; ``` -----------------------