处理用时最长的那个任务的员工【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) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。