美文网首页
2432. 处理用时最长的那个任务的员工

2432. 处理用时最长的那个任务的员工

作者: spark打酱油 | 来源:发表于2023-05-04 17:05 被阅读0次

1.题目

共有 n 位员工,每位员工都有一个从 0 到 n - 1 的唯一 id 。
给你一个二维整数数组 logs ,其中 logs[i] = [idi, leaveTimei] :
idi 是处理第 i 个任务的员工的 id ,且
leaveTimei 是员工完成第 i 个任务的时刻。所有 leaveTimei 的值都是 唯一 的。
注意,第 i 个任务在第 (i - 1) 个任务结束后立即开始,且第 0 个任务从时刻 0 开始。
返回处理用时最长的那个任务的员工的 id 。如果存在两个或多个员工同时满足,则返回几人中 最小 的 id 。

示例 1:
输入:n = 10, logs = [[0,3],[2,5],[0,9],[1,15]]
输出:1
解释:
任务 0 于时刻 0 开始,且在时刻 3 结束,共计 3 个单位时间。
任务 1 于时刻 3 开始,且在时刻 5 结束,共计 2 个单位时间。
任务 2 于时刻 5 开始,且在时刻 9 结束,共计 4 个单位时间。
任务 3 于时刻 9 开始,且在时刻 15 结束,共计 6 个单位时间。
时间最长的任务是任务 3 ,而 id 为 1 的员工是处理此任务的员工,所以返回 1 。

示例 2:
输入:n = 26, logs = [[1,1],[3,7],[2,12],[7,17]]
输出:3
解释:
任务 0 于时刻 0 开始,且在时刻 1 结束,共计 1 个单位时间。
任务 1 于时刻 1 开始,且在时刻 7 结束,共计 6 个单位时间。
任务 2 于时刻 7 开始,且在时刻 12 结束,共计 5 个单位时间。
任务 3 于时刻 12 开始,且在时刻 17 结束,共计 5 个单位时间。
时间最长的任务是任务 1 ,而 id 为 3 的员工是处理此任务的员工,所以返回 3 。

示例 3:
输入:n = 2, logs = [[0,10],[1,20]]
输出:0
解释:
任务 0 于时刻 0 开始,且在时刻 10 结束,共计 10 个单位时间。
任务 1 于时刻 10 开始,且在时刻 20 结束,共计 10 个单位时间。
时间最长的任务是任务 0 和 1 ,处理这两个任务的员工的 id 分别是 0 和 1 ,所以返回最小的 0 。

提示:
2 <= n <= 500
1 <= logs.length <= 500
logs[i].length == 2
0 <= idi <= n - 1
1 <= leaveTimei <= 500
idi != idi + 1
leaveTimei 按严格递增顺序排列

2.思路

  • 方法:for循环
  • 基本思想:
    1.进行循环遍历,将后一个数组的第二个值减去前一个数组的第二个值,获取差值即是对应的完成任务的时间。
    2.将id和差值存入到buffer中,便于处理。
    3.将buffer进行按照第二个值进行分组,然后再按照第一个值获取最小值,最后进行排序按照第二个值降序排序。
    4.返回最小值的id

3.代码

object Solution {
  def hardestWorker(n: Int, logs: Array[Array[Int]]): Int = {
    import scala.collection.mutable.ArrayBuffer
    val tuples = new ArrayBuffer[(Int,Int)]()
    var num = 0
    for(arr<-logs){
        tuples.append((arr(0),arr(1)-num))
        num = arr(1)
      }
    val result: List[(Int, Int)] = tuples.groupBy(a=>a._2).mapValues(x=>x.minBy(_._1)).values.toList.sortBy(x=>x._2).reverse
    return result.head._1
  }
}

4.复杂度分析

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

相关文章

  • C#泛型委托

    任务: (1)找出int数组里面最大值的那个元素(2)找出string数组里面最长的那个元素(3)找出Person...

  • SSH优化

    密码最长使用时间 在/etc/login.defs 设置密码最长使用时间,建议值1095 密码修改最小间隔时间 在...

  • leetcode无重复字符的最长字串 python实现

    无重复字符的最长字串是一道字符串处理算法的题目,在日常编程中,处理字符串是常见任务。用Python来实现leetc...

  • 时钟轮在 RPC 中的应用

    今天这篇文章介绍一下RPC中如何使用时钟轮实现定时任务,比如调用端的超时处理、定时心跳.... 定时任务带来了什么...

  • 时间轮原理及其在框架中的应用

    一、时间轮简介 1.1 为什么要使用时间轮 在平时开发中,经常会与定时任务打交道。下面举几个定时任务处理的例子。 ...

  • 每日一省 失衡技术(关系处理)

    失衡技术(关系处理) 案例一:总公司领导分派任务给分公司领导,分公司的领导把任务交给了一个员工去做。这个员...

  • 干的最长的员工 (微小说)

    干的最长的员工 (微小说) 办公室来了个花甲老人,从村里来的,送了一枚锦旗,抹着眼泪说要感谢曾经一刻帮助过他的人。...

  • 雇主该如何做好员工入职流程

    许多经理人在员工入职的过程中以为把合同签完,把邮箱电脑账号等等处理好,再把任务布置下去就完事了,却忽视了对员工在适...

  • 日更35 || 张红与李丽

    张红是个公司的老员工,因为种种原因,申请到了任务比较轻的岗位,每天的任务就是处理好手头的事情就陷入家长里短...

  • laravel关联模型中的多对多关系解析-belongsToMa

    laravel-china手册 场景 员工表通过 员工与任务的关联表 获取到自己的所有任务 数据表 那么,在员工的...

网友评论

      本文标题:2432. 处理用时最长的那个任务的员工

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