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
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP