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

Employee Importance ใน Python: คำนวณความสำคัญรวมของพนักงานและลูกน้อง

โครงสร้างพนักงาน: [id, importance, [subordinates]] ได้รายการพนักงานทั้งหมดและ id หนึ่ง ต้องการผลรวมความสำคัญของพนักงานคนนั้นและลูกน้องทุกระดับ (BFS/DFS)

ตัวอย่าง

employees = [[1,5,[2,3]],[2,3,[]],[3,3,[]]], id=1 → 5 + 3 + 3 = 11

ขั้นตอนการแก้ปัญหา (BFS)

  1. สร้าง dict weight[id] = importance, leader[id] = subordinates
  2. เริ่มจาก id ที่กำหนด ใช้คิว BFS
  3. สะสม importance ของแต่ละโหนดที่เยี่ยมชม
  4. คืนผลรวม

การติดตั้งใน Python

class Solution:
    def getImportance(self, employees, id):
        weight = {e[0]: e[1] for e in employees}
        subs = {e[0]: e[2] for e in employees}
        total = 0
        queue = [id]
        while queue:
            cur = queue.pop()
            total += weight[cur]
            queue.extend(subs[cur])
        return total

ob = Solution()
print(ob.getImportance([[1,5,[2,3]],[2,3,[]],[3,3,[]]], 1))  # 11

อินพุต / เอาต์พุต

Input: [[1,5,[2,3]],[2,3,[]],[3,3,[]]], 1
Output: 11