File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[][] } graph
3
+ * @return {number[] }
4
+ */
5
+ var eventualSafeNodes = function ( graph ) {
6
+ const n = graph . length
7
+ const g = { } ,
8
+ rg = { }
9
+ for ( let i = 0 ; i < n ; i ++ ) {
10
+ const arr = graph [ i ]
11
+ g [ i ] = new Set ( arr )
12
+ for ( let j of arr ) {
13
+ if ( ! rg [ j ] ) {
14
+ rg [ j ] = new Set ( )
15
+ }
16
+ rg [ j ] . add ( i )
17
+ }
18
+ }
19
+ let q = [ ]
20
+ for ( let i = 0 ; i < n ; i ++ ) {
21
+ if ( g [ i ] . size === 0 ) {
22
+ q . push ( i )
23
+ }
24
+ }
25
+ const res = [ ]
26
+ while ( q . length ) {
27
+ const size = q . length
28
+ const nxt = [ ]
29
+ for ( let i = 0 ; i < size ; i ++ ) {
30
+ const node = q [ i ]
31
+ res . push ( node )
32
+ for ( let j of rg [ node ] || [ ] ) {
33
+ g [ j ] . delete ( node )
34
+ if ( g [ j ] . size === 0 ) {
35
+ nxt . push ( j )
36
+ }
37
+ }
38
+ }
39
+
40
+ q = nxt
41
+ }
42
+
43
+ res . sort ( ( a , b ) => a - b )
44
+ return res
45
+ }
46
+
47
+ // another
48
+
49
+
1
50
/**
2
51
* @param {number[][] } graph
3
52
* @return {number[] }
You can’t perform that action at this time.
0 commit comments