Skip to content

Commit 7aa5159

Browse files
authored
Merge pull request neetcode-gh#3254 from a1exanddrovich/1376-dev
Create: 1376-time-needed-to-inform-all-employees.java
2 parents 045b916 + d058e89 commit 7aa5159

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Solution {
2+
3+
public int numOfMinutes(int n, int headID, int[] manager, int[] informTime) {
4+
Map<Integer, List<Integer>> adjacentMap = prepareAdjacentMap(headID, manager);
5+
6+
int time = 0;
7+
8+
Deque<Pair<Integer, Integer>> deque = new ArrayDeque<>();
9+
deque.addFirst(new Pair<>(headID, informTime[headID]));
10+
11+
while (!deque.isEmpty()) {
12+
Pair<Integer, Integer> curManager = deque.pollLast();
13+
time = Math.max(time, curManager.getValue());
14+
15+
if (adjacentMap.containsKey(curManager.getKey())) {
16+
for (Integer employee : adjacentMap.get(curManager.getKey())) {
17+
deque.addFirst(new Pair<>(employee, curManager.getValue() + informTime[employee]));
18+
}
19+
}
20+
}
21+
22+
return time;
23+
}
24+
25+
private Map<Integer, List<Integer>> prepareAdjacentMap(int headId, int[] manager) {
26+
Map<Integer, List<Integer>> adjacentMap = new HashMap<>();
27+
28+
for (int i = 0; i < manager.length; i++) {
29+
if (i == headId) {
30+
continue;
31+
}
32+
if (!adjacentMap.containsKey(manager[i])) {
33+
adjacentMap.put(manager[i], new ArrayList<>());
34+
}
35+
adjacentMap.get(manager[i]).add(i);
36+
}
37+
38+
return adjacentMap;
39+
}
40+
}

0 commit comments

Comments
 (0)