博客
关于我
力扣 690. 员工的重要性
阅读量:353 次
发布时间:2019-03-04

本文共 1226 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要找到某个员工及其所有直系下属的重要度之和。我们可以将员工信息看作是一个树形结构,其中每个员工是一个结点,直系下属是子节点。我们可以使用广度优先搜索(BFS)来高效地遍历整个子树,计算所有重要度之和。

方法思路

  • 建立邻接表:使用字典存储员工信息,以快速查询每个员工的重要度和下属列表。
  • 广度优先搜索(BFS):从目标员工开始,遍历所有直系下属,累加重要度。BFS确保我们按层次遍历,避免递归深度问题。
  • 解决代码

    import sysfrom collections import dequedef get_importance(employees, target_id):    # 创建邻接表    table = {}    for employee in employees:        employee_id = employee[0]        importance = employee[1]        subordinates = employee[2]        table[employee_id] = (importance, subordinates)        # 初始化队列并设置结果    queue = deque([target_id])    total_importance = 0        while queue:        current_id = queue.popleft()        imp, subs = table[current_id]        total_importance += imp        # 将下属加入队列        queue.extend(subs)        return total_importanceif __name__ == "__main__":    # 示例输入    input_employees = [        [1, 5, [2, 3]],        [2, 3, []],        [3, 3, []]    ]    target_id = 1    result = get_importance(input_employees, target_id)    print(result)

    代码解释

  • 邻接表构建:遍历输入的员工列表,构建一个字典table,键为员工ID,值为一个元组包含重要度和下属列表。
  • 队列初始化:使用队列从目标员工开始遍历,队列初始只包含目标员工ID。
  • BFS遍历:每次从队列中取出当前员工ID,累加其重要度,并将其下属ID加入队列,继续遍历。
  • 返回结果:当队列为空时,累加所有重要度即为所求结果。
  • 这种方法确保了我们能够高效地遍历整个子树,计算所有重要度之和。BFS的时间复杂度为O(N),其中N是员工数量,适用于处理较大的数据量。

    转载地址:http://jscr.baihongyu.com/

    你可能感兴趣的文章
    python中时间处理_Python中处理时间的几种方法小结
    查看>>
    Python中枚举串口(包括虚拟端口)的跨平台方法是什么?
    查看>>
    python中根号下a怎么写_python中根号怎么表示
    查看>>
    Python中正则表达式的巧妙使用
    查看>>
    Python中浮点数的二进制表示(位不是十六进制)
    查看>>
    Python中特殊函数和表达式 filter,map,reduce,lambda
    查看>>
    python中用socket检测端口_Python 用socket模块实现检测端口和检测web服务
    查看>>
    python中用于列表操作的plus和append有什么区别?
    查看>>
    python中用递归求和
    查看>>
    python中的@staticmethod
    查看>>
    python中的array函数作用_NumPy 数组使用大全
    查看>>
    python中的isinstance判断多个对象类型
    查看>>
    python中的keys、values、items
    查看>>
    Python中的lambda和apply结合使用
    查看>>
    python中的map函数
    查看>>
    Python中的numpy模块解析
    查看>>
    Python中的pickle
    查看>>
    Python中的signal模块和Ctrl+C操作
    查看>>
    python中的sort方法
    查看>>
    Python中的threading
    查看>>