Python 中的员工重要性

pythonserver side programmingprogramming更新于 2023/11/10 7:24:00

假设我们有一个员工信息的数据结构,其中有员工的唯一 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。

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

  • weight := a new map,leader := a new map
  • 对于 employees 中的每个 e,执行
    • weight[e[0]] := e[1]
    • leader[e[0]] := e[2]
  • res := 0
  • res := res + weight[id]
  • queue := leader[id]
  • 当队列非零时,执行
    • new_queue := a new list
    • node := 从中删除最后一个元素队列
    • res := res + weight[node]
    • 如果 leader[node] 非零,则
      • new_queue := new_queue + leader[leader 的大小]
    • queue := queue + new_queue
  • 返回 res

让我们看看下面的实现以便更好地理解 −

示例

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

相关文章