Computer >> Máy Tính >  >> Lập trình >> Python

Tầm quan trọng của nhân viên trong Python

Giả sử chúng ta có cấu trúc dữ liệu về thông tin nhân viên, có id duy nhất của nhân viên, giá trị tầm quan trọng của anh ta và id của cấp dưới trực tiếp của anh ta. Ví dụ:nhân viên 1 là lãnh đạo của nhân viên 2 và nhân viên 2 là lãnh đạo của nhân viên 3. Và giả sử giá trị tầm quan trọng của họ lần lượt là 15, 10 và 5. Sau đó, nhân viên 1 có cấu trúc dữ liệu như [1, 15, [2]] và nhân viên 2 có [2, 10, [3]] và nhân viên 3 có [3, 5, []].

Vì vậy, nếu chúng tôi có thông tin nhân viên của một công ty và id nhân viên, chúng tôi phải tìm tổng giá trị quan trọng của nhân viên này và tất cả cấp dưới của anh ta.

Vì vậy, nếu đầu vào là [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1, thì đầu ra sẽ là 11, là Emp1 có giá trị quan trọng 5 và có hai cấp dưới trực tiếp của Emp1, chúng là - Emp2 và Emp3. Bây giờ cả hai đều có giá trị quan trọng là 3. Vì vậy, tổng giá trị quan trọng của Emp1 là 5 + 3 + 3 =11.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • weight:=một bản đồ mới, leader:=một bản đồ mới
  • đối với mỗi e trong nhân viên, hãy thực hiện
    • trọng lượng [e [0]]:=e [1]
    • leader [e [0]]:=e [2]
  • res:=0
  • res:=res + weight [id]
  • hàng đợi:=leader [id]
  • trong khi hàng đợi khác 0, hãy thực hiện
    • new_queue:=một danh sách mới
    • node:=xóa phần tử cuối cùng khỏi hàng đợi
    • res:=res + weight [node]
    • nếu leader [node] khác 0, thì
      • new_queue:=new_queue + leader [quy mô của nhà lãnh đạo]
    • queue:=queue + new_queue
  • trả lại res

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

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

Đầu ra

11