2432. 處理用時(shí)最長(zhǎng)的那個(gè)任務(wù)的員工

1.題目

共有 n 位員工,每位員工都有一個(gè)從 0 到 n - 1 的唯一 id 。
給你一個(gè)二維整數(shù)數(shù)組 logs ,其中 logs[i] = [idi, leaveTimei] :
idi 是處理第 i 個(gè)任務(wù)的員工的 id ,且
leaveTimei 是員工完成第 i 個(gè)任務(wù)的時(shí)刻。所有 leaveTimei 的值都是 唯一 的。
注意,第 i 個(gè)任務(wù)在第 (i - 1) 個(gè)任務(wù)結(jié)束后立即開(kāi)始,且第 0 個(gè)任務(wù)從時(shí)刻 0 開(kāi)始。
返回處理用時(shí)最長(zhǎng)的那個(gè)任務(wù)的員工的 id 。如果存在兩個(gè)或多個(gè)員工同時(shí)滿(mǎn)足,則返回幾人中 最小 的 id 。

示例 1:
輸入:n = 10, logs = [[0,3],[2,5],[0,9],[1,15]]
輸出:1
解釋?zhuān)?br> 任務(wù) 0 于時(shí)刻 0 開(kāi)始,且在時(shí)刻 3 結(jié)束,共計(jì) 3 個(gè)單位時(shí)間。
任務(wù) 1 于時(shí)刻 3 開(kāi)始,且在時(shí)刻 5 結(jié)束,共計(jì) 2 個(gè)單位時(shí)間。
任務(wù) 2 于時(shí)刻 5 開(kāi)始,且在時(shí)刻 9 結(jié)束,共計(jì) 4 個(gè)單位時(shí)間。
任務(wù) 3 于時(shí)刻 9 開(kāi)始,且在時(shí)刻 15 結(jié)束,共計(jì) 6 個(gè)單位時(shí)間。
時(shí)間最長(zhǎng)的任務(wù)是任務(wù) 3 ,而 id 為 1 的員工是處理此任務(wù)的員工,所以返回 1 。

示例 2:
輸入:n = 26, logs = [[1,1],[3,7],[2,12],[7,17]]
輸出:3
解釋?zhuān)?br> 任務(wù) 0 于時(shí)刻 0 開(kāi)始,且在時(shí)刻 1 結(jié)束,共計(jì) 1 個(gè)單位時(shí)間。
任務(wù) 1 于時(shí)刻 1 開(kāi)始,且在時(shí)刻 7 結(jié)束,共計(jì) 6 個(gè)單位時(shí)間。
任務(wù) 2 于時(shí)刻 7 開(kāi)始,且在時(shí)刻 12 結(jié)束,共計(jì) 5 個(gè)單位時(shí)間。
任務(wù) 3 于時(shí)刻 12 開(kāi)始,且在時(shí)刻 17 結(jié)束,共計(jì) 5 個(gè)單位時(shí)間。
時(shí)間最長(zhǎng)的任務(wù)是任務(wù) 1 ,而 id 為 3 的員工是處理此任務(wù)的員工,所以返回 3 。

示例 3:
輸入:n = 2, logs = [[0,10],[1,20]]
輸出:0
解釋?zhuān)?br> 任務(wù) 0 于時(shí)刻 0 開(kāi)始,且在時(shí)刻 10 結(jié)束,共計(jì) 10 個(gè)單位時(shí)間。
任務(wù) 1 于時(shí)刻 10 開(kāi)始,且在時(shí)刻 20 結(jié)束,共計(jì) 10 個(gè)單位時(shí)間。
時(shí)間最長(zhǎng)的任務(wù)是任務(wù) 0 和 1 ,處理這兩個(gè)任務(wù)的員工的 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 按嚴(yán)格遞增順序排列

2.思路

  • 方法:for循環(huán)
  • 基本思想:
    1.進(jìn)行循環(huán)遍歷,將后一個(gè)數(shù)組的第二個(gè)值減去前一個(gè)數(shù)組的第二個(gè)值,獲取差值即是對(duì)應(yīng)的完成任務(wù)的時(shí)間。
    2.將id和差值存入到buffer中,便于處理。
    3.將buffer進(jìn)行按照第二個(gè)值進(jìn)行分組,然后再按照第一個(gè)值獲取最小值,最后進(jìn)行排序按照第二個(gè)值降序排序。
    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.復(fù)雜度分析

時(shí)間復(fù)雜度:O(N)
空間復(fù)雜度:O(N)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容