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