【每日刷题】2432处理用时最长的

共有 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 。

 

条件:

1.计算每个人的用时

2.找出最大用时

3.输出id(两种情况,一种最大,一种相同取最小)

 

思路:

1.字典,后一个减前一个,这里需要一个迭代器,一直更新为最新的数值。

2.迭代器,计算一个迭代一个,最开始设为0

3.迭代器,当用时最大时,id更新为最大的id,否则比较两个id取最小。

 

class Solution:

def hardestWorker(self, n: int, logs: List[List[int]]) -> int:

maxvalue=0

local=0

idvalue=0

for i in range(len(logs)):

if i==0:

maxvalue=logs[i][1]

idvalue=logs[i][0]

local=i

else:

if logs[i][1]-logs[i-1][1]>maxvalue or logs[i][1]-logs[i-1][1]==maxvalue and logs[i][0]<logs[local][0]:

maxvalue=logs[i][1]-logs[i-1][1]

idvalue=logs[i][0]

local=i

return idvalue   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值