สมมติว่าเรามีโครงสร้างข้อมูลของข้อมูลพนักงาน มี id เฉพาะของพนักงาน ค่าความสำคัญของเขา และ id ของผู้ใต้บังคับบัญชาโดยตรง ตัวอย่างเช่น พนักงาน 1 เป็นผู้นำของพนักงาน 2 และพนักงาน 2 เป็นผู้นำของพนักงาน 3 และสมมติว่าค่าความสำคัญของพวกเขาคือ 15, 10 และ 5 ตามลำดับ จากนั้นพนักงาน 1 มีโครงสร้างข้อมูลเช่น [1, 15, [2]] และพนักงาน 2 มี [2, 10, [3]] และพนักงาน 3 มี [3, 5, []]
ดังนั้น หากเรามีข้อมูลพนักงานของบริษัท และรหัสพนักงาน เราต้องหาค่าความสำคัญทั้งหมดของพนักงานรายนี้และลูกน้องทั้งหมดของเขา
ดังนั้น หากอินพุตเป็น [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1 ผลลัพธ์จะเป็น 11 เช่น Emp1 มีค่าความสำคัญ 5 และมีผู้ใต้บังคับบัญชาโดยตรงสองคนของ Emp1 พวกเขาคือ − Emp2 และ Emp3 ตอนนี้ทั้งคู่มีค่าความสำคัญ 3 ดังนั้นค่าความสำคัญรวมของ Emp1 คือ 5 + 3 + 3 =11
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- น้ำหนัก :=แผนที่ใหม่ ผู้นำ :=แผนที่ใหม่
- สำหรับ e แต่ละตัวในพนักงาน ทำ
- น้ำหนัก[e[0]] :=e[1]
- ผู้นำ[e[0]] :=e[2]
- res :=0
- res :=res + น้ำหนัก[id]
- คิว :=ผู้นำ[id]
- ในขณะที่คิวไม่เป็นศูนย์ ให้ทำ
- new_queue :=รายการใหม่
- โหนด :=ลบองค์ประกอบสุดท้ายออกจากคิว
- res :=res + น้ำหนัก[โหนด]
- ถ้าผู้นำ[โหนด]ไม่ใช่ศูนย์ ดังนั้น
- new_queue :=new_queue + ผู้นำ[ขนาดของผู้นำ]
- คิว :=คิว + new_queue
- ผลตอบแทน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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