Python 中的員工重要性


假設我們有一個員工資訊的資料結構,其中包含員工的唯一 ID、其重要性值以及其直接下屬的 ID。例如,員工 1 是員工 2 的領導,員工 2 是員工 3 的領導。假設他們的重要性值分別為 15、10 和 5。那麼員工 1 的資料結構類似於 [1, 15, [2]],員工 2 的資料結構類似於 [2, 10, [3]],員工 3 的資料結構類似於 [3, 5, []]。

因此,如果我們擁有公司員工的資訊以及一個員工 ID,我們必須找到該員工及其所有下屬的總重要性值。

因此,如果輸入類似於 [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1,則輸出將為 11,因為 Emp1 的重要性值為 5,並且 Emp1 有兩個直接下屬,它們是 Emp2 和 Emp3。現在兩者都具有重要性值 3。因此,Emp1 的總重要性值為 5 + 3 + 3 = 11。

為了解決這個問題,我們將遵循以下步驟:

  • weight := 一個新的對映,leader := 一個新的對映
  • 對於 employees 中的每個 e,執行
    • weight[e[0]] := e[1]
    • leader[e[0]] := e[2]
  • res := 0
  • res := res + weight[id]
  • queue := leader[id]
  • 當 queue 不為零時,執行
    • new_queue := 一個新的列表
    • node := 從 queue 中刪除最後一個元素
    • res := res + weight[node]
    • 如果 leader[node] 不為零,則
      • new_queue := new_queue + leader[leader 的大小]
    • queue := queue + new_queue
  • 返回 res

讓我們看看以下實現以獲得更好的理解:

示例

 即時演示

class Solution(object):
   def getImportance(self, employees, id):
      weight = {}
      leader = {}
      for e in employees:
         weight[e[0]] = e[1]
         leader[e[0]] = e[2]
      res = 0
      res += weight[id]
      queue = leader[id]
      while queue:
         new_queue = []
         node = queue.pop()
         res += weight[node]
         if leader[node]:
            new_queue += leader[node]
         queue += new_queue
      return res
ob = Solution()
print(ob.getImportance([[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1))

輸入

[[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1

輸出

11

更新於:2020 年 7 月 4 日

214 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.