Advertisement
Guest User

Grokking 195

a guest
Oct 31st, 2021
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. class Solution {
  2.  
  3. Map<Integer, List<Integer>> managerAndSub;
  4. int[] manager;
  5. int[] informTime;
  6.  
  7. public int numOfMinutes(int n, int headID, int[] manager, int[] informTime) {
  8. // represents manager and subordinates relationships
  9. this.managerAndSub = new HashMap<Integer, List<Integer>>();
  10. this.manager = manager;
  11. this.informTime = informTime;
  12.  
  13. for (int i = 0; i < n; i++) {
  14. List<Integer> subordinates = managerAndSub.getOrDefault(manager[i], new ArrayList<Integer>());
  15.  
  16. subordinates.add(i);
  17.  
  18. managerAndSub.put(manager[i], subordinates);
  19. }
  20.  
  21. return getTime(headID);
  22. }
  23.  
  24. private int getTime(int managerID) {
  25. // if manager has no subordinates, return 0
  26. if (!managerAndSub.containsKey(managerID)) {
  27. return 0;
  28. }
  29.  
  30. List<Integer> subordinates = managerAndSub.get(managerID);
  31.  
  32. int maxInformTime = 0;
  33. for (int subordinateID : subordinates) {
  34. maxInformTime = Math.max(maxInformTime, getTime(subordinateID));
  35. }
  36.  
  37. return maxInformTime + informTime[managerID];
  38. }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement