• 690. 员工的重要性


    给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id 。

    比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。那么员工 1 的数据结构是 [1, 15, [2]] ,员工 2的 数据结构是 [2, 10, [3]] ,员工 3 的数据结构是 [3, 5, []] 。注意虽然员工 3 也是员工 1 的一个下属,但是由于 并不是直系 下属,因此没有体现在员工 1 的数据结构中。

    现在输入一个公司的所有员工信息,以及单个员工 id ,返回这个员工和他所有下属的重要度之和。

    示例:

    输入:[[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1
    输出:11
    解释:
    员工 1 自身的重要度是 5 ,他有两个直系下属 2 和 3 ,而且 2 和 3 的重要度均为 3 。因此员工 1 的总重要度是 5 + 3 + 3 = 11 。
    

    提示:

    • 一个员工最多有一个 直系 领导,但是可以有多个 直系 下属
    • 员工数量不超过 2000 。

    递归

    """
    # Definition for Employee.
    class Employee:
        def __init__(self, id: int, importance: int, subordinates: List[int]):
            self.id = id
            self.importance = importance
            self.subordinates = subordinates
    """
    
    class Solution:
        def getImportance(self, employees: List['Employee'], id: int) -> int:
            res=0
            for e in employees:
                if e.id==id:
                    res+=e.importance
                    subordinate=e.subordinates
                    break
            for e in employees:
                if e.id in subordinate:
                    res+=e.importance
                    if e.subordinates:
                        for i in e.subordinates:
                            res+=self.getImportance(employees,i)
            return res
    """
    # Definition for Employee.
    class Employee:
        def __init__(self, id: int, importance: int, subordinates: List[int]):
            self.id = id
            self.importance = importance
            self.subordinates = subordinates
    """
    
    class Solution:
        def getImportance(self, employees: List['Employee'], id: int) -> int:
            for e in employees:
                if e.id==id:
                    if not e.subordinates:
                        return e.importance
                    for i in e.subordinates:
                        e.importance+=self.getImportance(employees,i)                   
                    return e.importance
            return 0

    dict+递归

    """
    # Definition for Employee.
    class Employee:
        def __init__(self, id: int, importance: int, subordinates: List[int]):
            self.id = id
            self.importance = importance
            self.subordinates = subordinates
    """
    
    class Solution:
        def getImportance(self, employees: List['Employee'], id: int) -> int:
            dict={}
            for e in employees:
                dict[e.id]=e
            def helper(dict,id):
                e=dict[id]
                for i in e.subordinates:
                    e.importance+=helper(dict,i)
                return e.importance
            return helper(dict,id)

    stack or queue

    """
    # Definition for Employee.
    class Employee:
        def __init__(self, id: int, importance: int, subordinates: List[int]):
            self.id = id
            self.importance = importance
            self.subordinates = subordinates
    """
    
    class Solution:
        def getImportance(self, employees: List['Employee'], id: int) -> int:
            dict={}
            for e in employees:
                dict[e.id]=e
            q=[dict[id]]
            res=0
            while q:
                e=q.pop(0)
                res+=e.importance
                for i in e.subordinates:
                    q.append(dict[i])
            return res
  • 相关阅读:
    VBA操作IE
    Eclipse中Git图标表示内容
    sqldeveloper更改语言设定
    VBA-FileToFileUpdate
    VBA-UTF-8文件的操作
    Null项目参与排序
    阿里云的学生机如何开放全部端口
    .net core3.1 webapi + vue + element-ui upload组件实现文件上传
    .net core控制台使用log4net
    vue2.x中使用三元表达式绑定class的时候遇到的坑
  • 原文地址:https://www.cnblogs.com/xxxsans/p/14724055.html
Copyright © 2020-2023  润新知