forked from descire/LeetCode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
solution1.js
34 lines (32 loc) · 839 Bytes
/
solution1.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* https://leetcode-cn.com/problems/time-needed-to-inform-all-employees/
*
* 1376. 通知所有员工所需的时间
*
* Medium
*
* 348ms 71.62%
* 108.3mb 100.00%
*/
const numOfMinutes = (n, headID, manager, informTime) => {
const record = new Map();
for (let i = 0; i < n; i++) {
if (!record.get(manager[i])) {
record.set(manager[i], []);
}
record.get(manager[i]).push(i);
}
return dfs(manager[headID], record, informTime);
}
function dfs(startIndex, record, informTime) {
if (record.get(startIndex) === undefined) {
return 0;
}
const indexsList = record.get(startIndex);
let sum = 0;
for (let i = 0, len = indexsList.length; i < len; i++) {
const subSum = dfs(indexsList[i], record, informTime);
sum = Math.max(sum, informTime[indexsList[i]] + subSum);
}
return sum;
}