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

    你可能感兴趣的文章
    openlayers 入门教程(十四):第三方插件
    查看>>
    openlayers 入门教程(四):layers 篇
    查看>>
    OpenLayers 项目分析(三)-OpenLayers中定制JavaScript内置类
    查看>>
    Openlayers下载与加载geoserver的wms服务显示地图
    查看>>
    Openlayers中使用Cluster+Overlay实现点击单个要素和聚合要素时显示不同弹窗
    查看>>
    Openlayers中使用Cluster实现点位元素重合时动态聚合与取消聚合
    查看>>
    Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合
    查看>>
    Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
    查看>>
    Openlayers中多图层遮挡时调整图层上下顺序
    查看>>
    Openlayers中将某个feature置于最上层
    查看>>
    Openlayers中点击地图获取坐标并输出
    查看>>
    Openlayers中设置定时绘制和清理直线图层
    查看>>
    Openlayers图文版实战,vue项目从0到1做基础配置
    查看>>
    OpenLayers学习三:地图旋转及地图跳转到某一点的方式(以类为接口)
    查看>>
    Openlayers实战:modifystart、modifyend互动示例
    查看>>
    Openlayers实战:判断共享单车是否在电子围栏内
    查看>>
    Openlayers实战:加载Bing地图
    查看>>
    Openlayers实战:绘制图形,导出geojson文件
    查看>>
    Openlayers实战:绘制图形,导出KML文件
    查看>>