Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ความสำคัญของพนักงานใน Python


สมมติว่าเรามีโครงสร้างข้อมูลของข้อมูลพนักงาน มี 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