算法第八天-员工的重要性

员工的重要性

题目要求

算法第八天-员工的重要性_第1张图片

解题思路

递归/DFS

一个直观的做法是,写一个递归函数来统计某个员工的总和。
统计自身的 i m p o r t a n c e importance importance 和直系下属的 i m p o r t a n c e importance importance 值。同时如果某个下属还有下属的话,则递归这个过程。

迭代/DFS

另外一种做法是使用[队列]来存储所有将要计算的 E m p l o y e e Employee Employee 对象,同时弹出时进行统计,并将其[下属]添加到队列尾部。

代码

递归

"""
# 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:
        employees_dict = {employee.id:employee for employee in employees}
        
        def dfs(employee_id):
            employee = employees_dict[employee_id]
            return employee.importance + sum(dfs(emp_id) for emp_id in employee.subordinates)
        return dfs(id)

复杂度分析

时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)

你可能感兴趣的:(算法)