LeetCode 2432. The Employee That Worked on the Longest Task
周賽314。沒看清楚題目WA了一次,尷尬。
題目
有n個員工,員工id分別為0~n-1。
輸入一個2D整數陣列logs ,其中logs[i] = [idi, leaveTimei],且:
- idi是從事第i個任務的員工id,且
- leaveTimei是員工完成第i個任務的時間。所有leaveTimei的值都是唯一的
注意,第i個任務在第(i-1)個任務結束後立即開始,而第0個任務在時間0開始。
求完成任務時間最長的員工的id。如果有多個員工之間存在平局,則回傳其中的最小id。
解法
總覺得題目描述有點爛,我是直接看例題才搞懂在幹嘛。
每個員工都是循序排隊進行工作的,第一個員工從時間0開始,結束後,下一位員工馬上無縫接軌。
只要當前工作時間大於先前最大值,又或是時間相同、但id較小,則更新答案。
時間複雜度O(N),空間複雜度O(1)。
class Solution:
def hardestWorker(self, n: int, logs: List[List[int]]) -> int:
curr=0
mx=0
ans=None
for id,end in logs:
t=end-curr
curr=end
if t>mx or (t==mx and id<ans):
ans=id
mx=t
return ans