LeetCode 2432. 处理用时最长的那个任务的员工

news/2024/11/28 17:49:46/

【LetMeFly】2432.处理用时最长的那个任务的员工

力扣题目链接:https://leetcode.cn/problems/the-employee-that-worked-on-the-longest-task/

共有 n 位员工,每位员工都有一个从 0n - 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 。

示例 2:

输入:n = 26, logs = [[1,1],[3,7],[2,12],[7,17]]
输出:3
解释:
任务 0 于时刻 0 开始,且在时刻 1 结束,共计 1 个单位时间。
任务 1 于时刻 1 开始,且在时刻 7 结束,共计 6 个单位时间。
任务 2 于时刻 7 开始,且在时刻 12 结束,共计 5 个单位时间。
任务 3 于时刻 12 开始,且在时刻 17 结束,共计 5 个单位时间。
时间最长的任务是任务 1 ,而 id 为 3 的员工是处理此任务的员工,所以返回 3 。

示例 3:

输入:n = 2, logs = [[0,10],[1,20]]
输出:0
解释:
任务 0 于时刻 0 开始,且在时刻 10 结束,共计 10 个单位时间。
任务 1 于时刻 10 开始,且在时刻 20 结束,共计 10 个单位时间。
时间最长的任务是任务 0 和 1 ,处理这两个任务的员工的 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 按严格递增顺序排列

方法一:遍历

我们需要三个变量:

  • ans记录答案
  • M记录当前所有员工的最大处理用时
  • lastTime记录上次任务从合适结束

接下来我们只需要遍历logs数组,对于某一条log, l o g [ 1 ] − l a s t T i m e log[1] - lastTime log[1]lastTime即为这个员工的工作时间

  • 如果它大于 M M M,则更新M的值,以及答案ans的值
  • 如果它等于 M M M,则更新答案ans的值为 min ⁡ ( a n s , l o g [ 0 ] ) \min(ans, log[0]) min(ans,log[0])

然后将 l a s t T i m e lastTime lastTime赋值为 l o g [ 1 ] log[1] log[1]并继续遍历

遍历结束后返回ans即为答案

  • 时间复杂度 O ( l e n ( l o g s ) ) O(len(logs)) O(len(logs))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++

class Solution {
public:int hardestWorker(int n, vector<vector<int>>& logs) {int ans = 0, M = -1, lastTime = 0;for (auto& log : logs) {if (log[1] - lastTime > M) {M = log[1] - lastTime;ans = log[0];}else if (log[1] - lastTime == M) {ans = min(ans, log[0]);}lastTime = log[1];}return ans;}
};

Python

# from typing import Listclass Solution:def hardestWorker(self, n: int, logs: List[List[int]]) -> int:ans, M, lastTime = 0, -1, 0for log in logs:if log[1] - lastTime > M:M = log[1] - lastTimeans = log[0]elif log[1] - lastTime == M:ans = min(ans, log[0])lastTime = log[1]return ans

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/130514393


http://www.ppmy.cn/news/63007.html

相关文章

Linux-Day01

Linux-Day01 课程内容 Linux简介Linux安装Linux常用命令 1. 前言 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统。说到操作系统&#xff0c;大家比较熟知的应该就是Windows和MacOS操作系统&#xff0c;我们今天所学习的Linux也是一款操作系统。 1.2 为什么要学…

初识TypeScript与静态类型解析

一、初识ts 二、如何运行ts代码 假如本地新建了一个b.ts文件 安装TypeScript&#xff1a;npm install -g typescript 编译代码&#xff1a;tsc b.ts 运行js&#xff1a;node b.js 在终端输入 tsc -init 生成 tsconfig.json 文件 类型注解&#xff1a;TypeScript里的类型注解是一…

如何提高执行力

在最近的工作中很多事情容易拖延的&#xff0c;导致部分工作和自己的生活容易因为拖延导致混乱&#xff0c;比如没有提前预订好抢票&#xff0c;结果导致放假买不到票等等的事情出现。 所以很多事懒的原因是执行力差&#xff0c;为什么执行力差&#xff0c;说明事情不重要。那就…

BI技巧丨计算组单位切换

PowerBI自带的数据显示单位有千、百万、十亿等&#xff0c;很明显这些数据单位有些时候是不太符合国人的使用习惯的。 在计算组出来之前&#xff0c;我们习惯利用配置表的方式&#xff0c;将这种数据单位转换为符合我们习惯的方式&#xff1b;在计算组出来之后&#xff0c;我们…

Android类似微信聊天页面教程(Kotlin)五——选择发送图片

前提条件 安装并配置好Android Studio Android Studio Electric Eel | 2022.1.1 Patch 2 Build #AI-221.6008.13.2211.9619390, built on February 17, 2023 Runtime version: 11.0.150-b2043.56-9505619 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 11 …

PAT A1035 Password

1035 Password 分数 20 作者 CHEN, Yue 单位 浙江大学 To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem is that there are always some confusing passwords since it is hard to distinguish 1 (one) from l (L i…

20230505----重返学习-回顾JavaScript知识体系的综合性整理-数据类型转化-堆栈内存及闭包作用域

day-062-sixty-two-20230505-回顾JavaScript知识体系的综合性整理-数据类型转化-堆栈内存及闭包作用域 回顾JavaScript知识体系的综合性整理 数据类型和堆栈内存 变量声明&#xff1a; 声明方式&#xff08;var、function、let、const、class、import模块&#xff09;命名方式…

【论文阅读】EPnP: An Accurate O(n) Solution to the PnP Problem

目录 EPnP: An Accurate O(n) Solution to the PnP ProblemOpencv.solvePnP documentationsimilar functionscv::SOLVEPNP_EPNP: Paper 008 EPnP: An Accurate O(n) Solution to the PnP Problem Opencv.solvePnP documentation solvePnP bool cv::solvePnP( InputArray ob…