2024/08/26 每日一题

LeetCode 690 员工的重要性

方法1:DFS + 哈希表

/*
// Definition for Employee.
class Employee {
    public int id;
    public int importance;
    public List<Integer> subordinates;
};
*/

class Solution {
    HashMap<Integer, Employee> map = new HashMap<Integer, Employee>();
    
    public int getImportance(List<Employee> employees, int id) {    
        for (Employee employee : employees)
            map.put(employee.id, employee);
        return dfs(id);
    }

    int dfs(int fa) {
        int ans = map.get(fa).importance;
        for (int son : map.get(fa).subordinates)
            ans += dfs(son);
        return ans;
    }
}
"""
# 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:
        dic = {e.id : e for e in employees}
        
        def dfs(fa: int) -> int:
            ans = dic[fa].importance
            for son in dic[fa].subordinates:
                ans += dfs(son)
            return ans

        return dfs(id)

方法2:BFS + 哈希表

/*
// Definition for Employee.
class Employee {
    public int id;
    public int importance;
    public List<Integer> subordinates;
};
*/

class Solution {
    public int getImportance(List<Employee> employees, int id) {
        HashMap<Integer, Employee> map = new HashMap<Integer, Employee>();    
        for (Employee employee : employees)
            map.put(employee.id, employee);
        // LinkedList 实现了 Queue 接口
        Queue<Integer> queue = new LinkedList<Integer>();
        int ans = 0; queue.offer(id);
        while (!queue.isEmpty()) {
            int fa = queue.poll(); 
            ans += map.get(fa).importance;
            for (int son : map.get(fa).subordinates)
                queue.offer(son);
        }
        return ans;
    }
}
"""
# 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:
        from collections import deque

        dic = {e.id : e for e in employees}
        queue = deque([id]); ans = 0
        while queue:
            fa = queue.popleft()
            ans += dic[fa].importance
            for son in dic[fa].subordinates:
                queue.append(son)
        return ans
posted @   Koonan-Edogawa  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示