Find Eventual Safe States LeetCode solution in Java

1
class Solution {
2
public List<Integer> eventualSafeNodes(int[][] graph) {
3
int n = graph.length;
4
List<Integer> ans = new ArrayList<>();
5

6
boolean visited[] = new boolean[n];
7
boolean dfsVisited[] = new boolean[n];
8

9
boolean nodeCycles[] = new boolean[n];
10

11
for (int i = 0; i < n; i++) {
12
if (visited[i] == false) {
13
isCycle(i, graph, dfsVisited, visited, nodeCycles);
14
}
15
}
16
for (int i = 0; i < nodeCycles.length; i++) {
17
if (nodeCycles[i] == false) ans.add(i);
18
}
19
return ans;
20
}
21

22
public boolean isCycle(
23
int node, int graph[][], boolean dfsVisited[], boolean visited[], boolean[] nodeCycles) {
24
visited[node] = true;
25
dfsVisited[node] = true;
26

27
for (int adjNode : graph[node]) {
28
if (visited[adjNode] == false) {
29
if (isCycle(adjNode, graph, dfsVisited, visited, nodeCycles))
30
return nodeCycles[node] = true;
31
} else if (visited[adjNode] == true && dfsVisited[adjNode] == true) {
32
return nodeCycles[node] = true;
33
}
34
}
35
dfsVisited[node] = false;
36
return false;
37
}
38
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0