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

    你可能感兴趣的文章
    No module named tensorboard.main在安装tensorboardX的时候遇到的问题
    查看>>
    No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
    查看>>
    No new migrations found. Your system is up-to-date.
    查看>>
    No qualifying bean of type XXX found for dependency XXX.
    查看>>
    No resource identifier found for attribute 'srcCompat' in package的解决办法
    查看>>
    no session found for current thread
    查看>>
    No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    查看>>
    NO.23 ZenTaoPHP目录结构
    查看>>
    NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
    查看>>
    NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
    查看>>
    Node JS: < 一> 初识Node JS
    查看>>
    Node-RED中使用JSON数据建立web网站
    查看>>
    Node-RED中使用json节点解析JSON数据
    查看>>
    Node-RED中使用node-random节点来实现随机数在折线图中显示
    查看>>
    Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
    查看>>
    Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
    查看>>
    Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
    查看>>
    Node-RED中实现HTML表单提交和获取提交的内容
    查看>>
    Node.js 8 中的 util.promisify的详解
    查看>>
    Node.js 函数是什么样的?
    查看>>