美文网首页算法
1376. 通知所有员工所需的时间

1376. 通知所有员工所需的时间

作者: 红树_ | 来源:发表于2023-04-30 19:56 被阅读0次

五一劳动节快乐! 国际劳动节又称“五一国际劳动节”(英语:International Workers' Day,May Day),是世界上80多个国家的全国性节日。定在每年的五月一日。它是全世界劳动人民共同拥有的节日。

LC每日一题,参考1376. 通知所有员工所需的时间

题目

1. 公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0n - 1。公司的总负责人通过 headID 进行标识。
2. 在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责人,manager[headID] = -1。题目保证从属关系可以用树结构显示。
3. 公司总负责人想要向公司所有员工通告一条紧急消息。他将会首先通知他的直属下属们,然后由这些下属通知他们的下属,直到所有的员工都得知这条紧急消息。
4. 第 i 名员工需要 informTime[i] 分钟来通知它的所有直属下属(也就是说在 informTime[i] 分钟后,他的所有直属下属都可以开始传播这一消息)。

返回通知所有员工这一紧急消息所需要的 分钟数

解题思路

  • 记忆化搜索:可直接递归求每一位员工叶子节点通知所需时间取最大值即可,递归时可使用记忆化搜索防止重复计算。

记忆化搜索

class Solution {

     int[] manager, informTime, memo;
     int n,headID;
    public int numOfMinutes(int n, int headID, int[] manager, int[] informTime) {
        //考虑递归求树的最长直径
        this.manager = manager;
        this.informTime = informTime;
        this.n = n;
        this.headID = headID;
        int max = 0;
        //记忆化搜索优化
        memo = new int[n];
        for(int i = 0; i < n; i++) {
            max = Math.max(max,dfs(i));
        }
        return max;
    }

    //总负责人到i员工通知时间
    int dfs(int id) {
        if(memo[id] > 0) return memo[id];
        if(id == headID) return 0;
        if(manager[id] == headID) return memo[id] = informTime[headID];
        return memo[id] = informTime[manager[id]] +dfs(manager[id]);//上级通知时间+上级的上级通知时间
    }
}

复杂度分析

  • 时间复杂度:O(n),递归时记忆的状态个数n,n为员工数。
  • 空间复杂度:O(n),记忆辅助数组空间n

2023.05.01

相关文章

  • LeetCode | 1376. Time Needed to

    LeetCode 1376. Time Needed to Inform All Employees通知所有员工所...

  • 这一天终于还是来了

    下午,老板在员工群里发了一则通知:鉴于公司内部设备整改与升级,自明天开始所有员工放假一个月,具体上班时间以群里通知...

  • 一次有意义的拓展训练

    公司为了能调动员工们工作的积极性,更好的把工作做好,前段时间就下达通知了,公司所有员工都要参加野外拓展训练,并且告...

  • 课程体系及内训师体系建设 - 草稿 - 草稿

    什么是课程体系? 员工胜任某岗位所需所有能力以及如何培养的所有要素。 训练目标:胜任岗位。 学习目标和绩效目标关联...

  • 视觉中国之股票价值及趋势分析

    前段时间,公司通知所有员工以公司名义在微信、微博及其他媒体平台发资讯时,所使用图片必须是出于视觉中国版权所有,因公...

  • 日检

    上午配合社区民警进行消防培训及演练前动员工作,通知所管小区商铺业主下午准时参加,并联系安排场地,所需物料。下午2点...

  • sql操作第一篇

    查找最晚入职员工的所有信息 解法: 查找入职员工时间排名倒数第三的员工所有信息

  • 入住工厂

    突然接到工厂的通知,要求所有员工全部入住工厂宿舍,从今晚开始一直到月底一共7天时间。 对于住工厂所有的人都不愿意,...

  • 多给生活留条路

    一家外贸企业由于订单锐减,终于无奈宣布:除个别岗位外,所有员工将于五一之后开始放假,具体开工时间另行通知。这下,员...

  • iOS 本地通知实现

    1、导入所需的 库 2、注册通知,代理实现 3、添加通知、包含一些操作 4、移除通知

网友评论

    本文标题:1376. 通知所有员工所需的时间

    本文链接:https://www.haomeiwen.com/subject/lminjdtx.html