首页 > 其他分享 >2024/08/26 每日一题

2024/08/26 每日一题

时间:2024-08-26 12:14:53浏览次数:8  
标签:26 int subordinates 08 2024 importance ans Employee id

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

标签:26,int,subordinates,08,2024,importance,ans,Employee,id
From: https://www.cnblogs.com/XuGui/p/18380775

相关文章

  • 谷粒商城实战笔记-260-商城业务-消息队列-可靠投递-消费端确认
    文章目录一,Ack消息确认机制简介1,简介2,两个常用的Api二,消费者端消息确认实战三,RabbitMQ可靠性保障总结1,生产者2,消费者一,Ack消息确认机制简介消费者端的确认机制(ACK/NACK)是RabbitMQ中一种重要的特性,它允许消费者告知Broker它们是否成功处理了接收到的......
  • 软件著作权申请教程(超详细)(2024新版)软著申请
         目录一、注册账号与实名登记二、材料准备三、申请步骤1.办理身份2.软件申请信息3.软件开发信息4.软件功能与特点5.填报完成一、注册账号与实名登记    首先我们需要在官网里面注册一个账号,并且完成实名认证,一般是注册【个人】的身份。中国版权保......
  • 记一次线上事故(2024-08-24)
    事故描述线上支付金额异常,平台配置支付155元,用户实际付款1.55元.临时解决方案1:调整中台配置价格,调整价格为15500元,那么实际支付金额=155元.(最快解决实际支付金额)影响:用户前端页面查看金额为15,500,会导致客户投诉(方案产品驳回)方案2:更改后台支付逻辑代码,......
  • 2024 Datawhale X 李宏毅苹果书 AI 夏令营第5期——跟李宏毅学深度学习(入门)
    本方向学习目标本方向的核心学习目标是——通过《深度学习详解》和李宏毅老师21年的机器学习课程视频,入门机器学习,并尝试学习深度学习,展开代码实践(选修)。相关学习链接......
  • 2024年智能革命:HarmonyOS NEXT与盘古大模型5.0的颠覆性融合
    引言2024年,这一年注定在全球智能设备市场的历史上写下浓墨重彩的一笔。作为全球科技巨头,华为再次以其前瞻性的布局,推动了技术与应用的深度融合。在这个充满变革的时代,华为通过不断扩展的鸿蒙生态系统,重新定义了操作系统与AI技术的结合方式。你是否已经感受到这场变革的力量?在全......
  • B站宋红康JAVA基础视频教程个人笔记chapter08-09(异常处理+多线程)
    文章目录1.异常处理方式1:try-catch-finally2.异常处理方式1:throws3.程序,进程,线程的区别4.线程的创建4.1线程的创建方式1:4.2线程的创建方式2:5.线程类的常用方法和生命周期5.1线程的生命周期jdk5之前6.线程的安全问题和同步机制6.线程之间的通信6.1为什么需要线程之间......
  • 【2024-08-24】连岳摘抄
    23:59从清晨到黄昏,我在门前坐着,我知道一见到你,那快乐时光就会骤然而至。                                                 ——泰戈尔你顾虑当家庭主妇与时代脱轨。......
  • 【2024-08-23】带娃感受
    20:00年轻一代平视世界,就同时代表了中国的进步,只有去平视这个世界,你才能把真正的自己、完整的自己,更强地发挥出来。                                                 —......
  • .NET周刊【8月第3期 2024-08-18】
    国内文章Roslyn简单实现代码智能提示补全功能https://www.cnblogs.com/lindexi/p/18365261相信有很多伙伴热衷于编写IDE应用,在dotnet系下,通过Roslyn友好的API和强大的能力,实现一个代码智能提示是非常简单的事情。本文将和大家简单介绍一下如何使用Roslyn实现简单的......
  • [笔记](更新中)CSP-S 2024 查漏补缺
    复习内容部分来自NOI大纲中入门级和提高级的内容。联合体(Union)联合体是一种复合数据类型,其的定义上与结构体的定义类似。与结构体不同,联合体中的所有元素共用一块内存,所以它占空间大小一般是最大成员的大小(不考虑对齐的情况下),相应地,任意时刻只有一个成员带有值,如果访问其他成员......