Count Nodes With the Highest Score LeetCode solution in JavaScript

1
var countHighestScoreNodes = function (parents) {
2
const n = parents.length;
3
const adj = [];
4

5
for (let i = 0; i < n; ++i) {
6
adj[i] = [];
7
}
8

9
for (let i = 1; i < n; ++i) {
10
const parent = parents[i];
11
adj[parent].push(i);
12
}
13

14
let maxProd = 0;
15
let maxCount = 0;
16

17
dfs(0);
18

19
return maxCount;
20

21
function dfs(node) {
22
let rem = n - 1;
23

24
let sum = 0;
25
let prod = 1;
26

27
for (const child of adj[node]) {
28
const count = dfs(child);
29

30
sum += count;
31
prod *= count;
32
rem -= count;
33
}
34

35
if (rem > 0) prod *= rem;
36

37
if (prod > maxProd) {
38
maxProd = prod;
39
maxCount = 1;
40
} else if (prod === maxProd) {
41
++maxCount;
42
}
43

44
return sum + 1;
45
}
46
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0