处理用时最长的那个任务的员工【LC2432】
共有
n位员工,每位员工都有一个从0到n - 1的唯一 id 。给你一个二维整数数组
logs,其中logs[i] = [idi, leaveTimei]:
idi是处理第i个任务的员工的 id ,且leaveTimei是员工完成第i个任务的时刻。所有leaveTimei的值都是 唯一 的。注意,第
i个任务在第(i - 1)个任务结束后立即开始,且第0个任务从时刻0开始。返回处理用时最长的那个任务的员工的 id 。如果存在两个或多个员工同时满足,则返回几人中 最小 的 id 。
-
思路
求出完成每个任务的用时时长,返回处理用时最长的那个任务的员工的 id 。如果存在两个或多个员工同时满足,则返回几人中 最小 的 id 。
-
实现
class Solution { public int hardestWorker(int n, int[][] logs) { int mx = logs[0][1]; int res = logs[0][0]; for (int i = 1; i < logs.length; i++){ if (logs[i][1] - logs[i - 1][1] > mx){ res = logs[i][0]; mx = logs[i][1] - logs[i - 1][1]; }else if (logs[i][1] - logs[i - 1][1] == mx){ res = Math.min(res, logs[i][0]); } } return res; } }- 复杂度
- 时间复杂度:O(n)O(n)O(n)
- 空间复杂度:O(1)O(1)O(1)
- 复杂度
-
实现
class Solution { public int hardestWorker(int n, int[][] logs) { int ans = logs[0][0], maxT = logs[0][1]; for (int i = 1; i < logs.length; i++) { int t = logs[i][1] - logs[i - 1][1]; if (t > maxT || t == maxT && logs[i][0] < ans) { ans = logs[i][0]; maxT = t; } } return ans; } } 作者:灵茶山艾府 链接:https://leetcode.cn/problems/the-employee-that-worked-on-the-longest-task/solutions/1878942/mo-ni-by-endlesscheng-ka78/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

给定一个二维数组logs,表示员工的任务处理情况,返回处理用时最长的任务的员工id。如果有多名员工用时相同且最长,返回id最小的一个。解决方案通过遍历logs计算每个任务的用时并更新答案。
16万+

被折叠的 条评论
为什么被折叠?



