@@ -91,6 +91,59 @@ Thus, people 0, 1, 2, and 3 know the secret after all the meetings.
91
91
92
92
```
93
93
94
+ ### ** TypeScript**
95
+
96
+ ``` ts
97
+ function findAllPeople(n : number , meetings : number [][], firstPerson : number ): number [] {
98
+ let parent: Array <number > = Array .from ({ length: n + 1 }, (v , i ) => i );
99
+ parent [firstPerson ] = 0 ;
100
+
101
+ function findParent (index : number ): number {
102
+ if (parent [index ] != index ) parent [index ] = findParent (parent [index ]);
103
+ return parent [index ];
104
+ }
105
+
106
+ let map = new Map <number , Array <Array <number >>>();
107
+ for (let meeting of meetings ) {
108
+ const time = meeting [2 ];
109
+ let members: Array <Array <number >> = map .get (time ) || new Array ();
110
+ members .push (meeting );
111
+ map .set (time , members );
112
+ }
113
+ const times = [... map .keys ()].sort ((a , b ) => a - b );
114
+ for (let time of times ) {
115
+ // round 1
116
+ for (let meeting of map .get (time )) {
117
+ let [a, b] = meeting ;
118
+ if (! parent [findParent (a )] || ! parent [findParent (b )]) {
119
+ parent [findParent (a )] = 0 ;
120
+ parent [findParent (b )] = 0 ;
121
+ }
122
+ parent [findParent (a )] = parent [findParent (b )];
123
+ }
124
+ // round 2
125
+ for (let meeting of map .get (time )) {
126
+ let [a, b] = meeting ;
127
+ if (! parent [findParent (a )] || ! parent [findParent (b )]) {
128
+ parent [findParent (a )] = 0 ;
129
+ parent [findParent (b )] = 0 ;
130
+ } else {
131
+ parent [a ] = a ;
132
+ parent [b ] = b ;
133
+ }
134
+ }
135
+ }
136
+
137
+ let ans = new Array <number >();
138
+ for (let i = 0 ; i <= n ; i ++ ) {
139
+ if (! parent [findParent (i )]) {
140
+ ans .push (i );
141
+ }
142
+ }
143
+ return ans ;
144
+ };
145
+ ```
146
+
94
147
### ** ...**
95
148
96
149
```
0 commit comments