博客
关于我
力扣 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/

    你可能感兴趣的文章
    Qt知识:视图框架QGraphicsWidget详解
    查看>>
    SpringBoot中项目启动及定时任务缓存数据库常用数据至内存变量并转换后高频调用
    查看>>
    Qt知识: 画刷风格
    查看>>
    QT的OpenGL渲染窗QOpenGLWidget Class
    查看>>
    QT的C++程序加载动态链接库DLL(Linux下是so)的方式
    查看>>
    QT界面操作1:如何跟踪鼠标位置?
    查看>>
    Qt环境搭建(Visual Studio)
    查看>>
    QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)...
    查看>>
    QT样式表——url路径
    查看>>
    QT数据库(三):QSqlQuery使用
    查看>>
    QT教程5:消息框
    查看>>
    SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
    查看>>
    pom.xml中提示web.xml is missing and <failonmissingw>...
    查看>>
    Pomelo开发中Web客户端开发API简介
    查看>>
    QT教程2:QT5的体系构架
    查看>>
    PON架构(全光网络)
    查看>>
    PoolingHttpClientConnectionManager原理剖析
    查看>>
    QT教程1:ubuntu18.04安装QT5
    查看>>
    POP-一个点击带有放大还原的动画效果
    查看>>
    POP3 协议在计算机网络中的优缺点
    查看>>