File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[][] } edges
3
+ * @return {number[] }
4
+ */
5
+ var findRedundantConnection = function ( edges ) {
6
+ const parents = [ ] ;
7
+ const rank = new Array ( edges . length ) . fill ( 1 ) ;
8
+ for ( let i = 0 ; i < edges . length ; i ++ ) {
9
+ parents [ i ] = i ;
10
+ } ;
11
+
12
+ function find ( n ) {
13
+ let parent = parents [ n ] ;
14
+ while ( parent !== parents [ parent ] ) {
15
+ parents [ parent ] = parents [ parents [ parent ] ] ;
16
+ parent = parents [ parent ] ;
17
+ }
18
+ return parent ;
19
+ }
20
+
21
+ function join ( vertex1 , vertex2 ) {
22
+ const parent1 = find ( vertex1 ) ;
23
+ const parent2 = find ( vertex2 ) ;
24
+ if ( parent1 == parent2 ) return false ;
25
+
26
+ if ( rank [ parent1 ] > rank [ parent2 ] ) {
27
+ parents [ parent2 ] = parent1 ;
28
+ rank [ parent1 ] += rank [ parent2 ] ;
29
+ } else {
30
+ parents [ parent1 ] = parent2 ;
31
+ rank [ parent2 ] += rank [ parent1 ] ;
32
+ } ;
33
+ return true ;
34
+ } ;
35
+
36
+ for ( const edge of edges ) {
37
+ if ( ! join ( edge [ 0 ] - 1 , edge [ 1 ] - 1 ) ) return edge ;
38
+ } ;
39
+ } ;
You can’t perform that action at this time.
0 commit comments