Loud and Rich LeetCode solution in Java

1
class Solution {
2
ArrayList<ArrayList<Integer>> adj = new ArrayList<>();
3
int res[];
4

5
public int[] loudAndRich(int[][] richer, int[] quiet) {
6
int n = quiet.length;
7
res = new int[n];
8
Arrays.fill(res, -1);
9
for (int i = 0; i < n; i++) adj.add(new ArrayList<Integer>());
10
for (int i = 0; i < richer.length; i++) {
11
if (adj.get(richer[i][1]) == null) adj.add(new ArrayList<>());
12
adj.get(richer[i][1]).add(richer[i][0]);
13
}
14
for (int i = 0; i < n; i++) dfs(i, quiet);
15
return res;
16
}
17

18
public int dfs(int node, int[] quiet) {
19
if (res[node] == -1) {
20
res[node] = node;
21
for (int v : adj.get(node)) {
22
int cand = dfs(v, quiet);
23
if (quiet[cand] < quiet[res[node]]) res[node] = cand;
24
}
25
}
26
return res[node];
27
}
28
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0