LeetCode 1376. 通知所有员工所需的时间(DFS)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1376. 通知所有员工所需的时间(DFS)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
公司里有 n 名員工,每個員工的 ID 都是獨一無二的,編號從 0 到 n - 1。公司的總負責人通過 headID 進行標識。
在 manager 數組中,每個員工都有一個直屬負責人,其中 manager[i] 是第 i 名員工的直屬負責人。對于總負責人,manager[headID] = -1。題目保證從屬關系可以用樹結構顯示。
公司總負責人想要向公司所有員工通告一條緊急消息。他將會首先通知他的直屬下屬們,然后由這些下屬通知他們的下屬,直到所有的員工都得知這條緊急消息。
第 i 名員工需要 informTime[i] 分鐘來通知它的所有直屬下屬(也就是說在 informTime[i] 分鐘后,他的所有直屬下屬都可以開始傳播這一消息)。
返回通知所有員工這一緊急消息所需要的 分鐘數 。
示例 1: 輸入:n = 1, headID = 0, manager = [-1], informTime = [0] 輸出:0 解釋:公司總負責人是該公司的唯一一名員工。示例 2:
輸入:n = 6, headID = 2, manager = [2,2,-1,2,2,2], informTime = [0,0,1,0,0,0] 輸出:1 解釋:id = 2 的員工是公司的總負責人,也是其他所有員工的直屬負責人, 他需要 1 分鐘來通知所有員工。 上圖顯示了公司員工的樹結構。示例 3:
輸入:n = 7, headID = 6, manager = [1,2,3,4,5,6,-1], informTime = [0,6,5,4,3,2,1] 輸出:21 解釋:總負責人 id = 6。他將在 1 分鐘內通知 id = 5 的員工。 id = 5 的員工將在 2 分鐘內通知 id = 4 的員工。 id = 4 的員工將在 3 分鐘內通知 id = 3 的員工。 id = 3 的員工將在 4 分鐘內通知 id = 2 的員工。 id = 2 的員工將在 5 分鐘內通知 id = 1 的員工。 id = 1 的員工將在 6 分鐘內通知 id = 0 的員工。 所需時間 = 1 + 2 + 3 + 4 + 5 + 6 = 21 。示例 4: 輸入:n = 15, headID = 0, manager = [-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6], informTime = [1,1,1,1,1,1,1,0,0,0,0,0,0,0,0] 輸出:3 解釋:第一分鐘總負責人通知員工 1 和 2 。 第二分鐘他們將會通知員工 3, 4, 5 和 6 。 第三分鐘他們將會通知剩下的員工。示例 5: 輸入:n = 4, headID = 2, manager = [3,3,-1,2], informTime = [0,0,162,914] 輸出:1076提示: 1 <= n <= 10^5 0 <= headID < n manager.length == n 0 <= manager[i] < n manager[headID] == -1 informTime.length == n 0 <= informTime[i] <= 1000 如果員工 i 沒有下屬,informTime[i] == 0 。 題目 保證 所有員工都可以收到通知。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/time-needed-to-inform-all-employees
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 從葉子(時間等于0的開始往上找)
執行用時:488 ms
內存消耗:87.8 MB
總結
以上是生活随笔為你收集整理的LeetCode 1376. 通知所有员工所需的时间(DFS)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员面试金典 - 面试题 10.02.
- 下一篇: LeetCode 83. 删除排序链表中