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。

为了解决这个问题,我们将遵循以下步骤-

  • 重量:=新映射,领导者:=新映射

  • 对于员工中的每个e,

    • 权重[e [0]]:= e [1]

    • 领导者[e [0]]:= e [2]

  • res:= 0

  • res:= res +重量[id]

  • 队列:=领导者[id]

  • 当队列不为零时,执行

    • new_queue:= new_queue +领导者[领导者大小]

    • new_queue:=一个新列表

    • 节点:=从队列中删除最后一个元素

    • res:= res +重量[节点]

    • 如果Leader [node]不为零,则

    • 队列:=队列+ 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