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; +}; ``` -----------------------