Skip to content

Commit 76d4d56

Browse files
authored
Update 802-find-eventual-safe-states.js
1 parent efeceff commit 76d4d56

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

802-find-eventual-safe-states.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,52 @@
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+
150
/**
251
* @param {number[][]} graph
352
* @return {number[]}

0 commit comments

Comments
 (0)