LeetCode-2589. 完成所有任务的最少时间【栈 贪心 数组 二分查找 排序】

LeetCode-2589. 完成所有任务的最少时间【栈 贪心 数组 二分查找 排序】

  • 题目描述:
  • 解题思路一:贪心+暴力
  • 解题思路二:栈+二分查找
  • 解题思路三:简化版

题目描述:

你有一台电脑,它可以 同时 运行无数个任务。给你一个二维整数数组 tasks ,其中 tasks[i] = [starti, endi, durationi] 表示第 i 个任务需要在 闭区间 时间段 [starti, endi] 内运行 durationi 个整数时间点(但不需要连续)。

当电脑需要运行任务时,你可以打开电脑,如果空闲时,你可以将电脑关闭。

请你返回完成所有任务的情况下,电脑最少需要运行多少秒。

示例 1:

输入:tasks = [[2,3,1],[4,5,1],[1,5,2]]
输出:2
解释:

  • 第一个任务在闭区间 [2, 2] 运行。
  • 第二个任务在闭区间 [5, 5] 运行。
  • 第三个任务在闭区间 [2, 2] 和 [5, 5] 运行。
    电脑总共运行 2 个整数时间点。

示例 2:

输入:tasks = [[1,3,2],[2,5,3],[5,6,2]]
输出:4
解释:

  • 第一个任务在闭区间 [2, 3] 运行
  • 第二个任务在闭区间 [2, 3] 和 [5, 5] 运行。
  • 第三个任务在闭区间 [5, 6] 运行。
    电脑总共运行 4 个整数时间点。

提示:

1 <= tasks.length <= 2000
tasks[i].length == 3
1 <= starti, endi <= 2000
1 <= durationi <= endi - starti + 1

解题思路一:贪心+暴力

三个关键点。1. 按区间右端点排序。2. 把任务尽可能安排在区间的后缀。3. 用数组记录任务的执行情况
在这里插入图片描述

class Solution:def findMinimumTime(self, tasks: List[List[int]]) -> int:tasks.sort(key = lambda x: x[1]) # 排序run = [False] * (tasks[-1][1] + 1) # 初始化确定哪些时间运行的数组for s, e, d in tasks:d -= sum(run[s: e + 1])  # 去掉运行中的时间点if d <= 0:  # 该任务已完成continuefor i in range(e, s-1, -1): # 标记需要运行的时间点if run[i]:continuerun[i] = Trued -= 1if d == 0:breakreturn sum(run)

时间复杂度:O(nM)其中 n 是 tasks 的大小,M 是 tasks 的时间段右端点 end 的最大值。
空间复杂度:O(logn + M) 排序和记录的数组

解题思路二:栈+二分查找

在这里插入图片描述

class Solution:def findMinimumTime(self, tasks: List[List[int]]) -> int:tasks.sort(key=lambda t: t[1])# 栈中保存闭区间左右端点,栈底到栈顶的区间长度的和st = [(-2, -2, 0)]  # 哨兵,保证不和任何区间相交for start, end, d in tasks:_, r, s = st[bisect_left(st, (start,)) - 1]d -= st[-1][2] - s  # 去掉运行中的时间点if start <= r:  # start 在区间 st[i] 内d -= r - start + 1  # 去掉运行中的时间点if d <= 0:continuewhile end - st[-1][1] <= d:  # 剩余的 d 填充区间后缀l, r, _ = st.pop()d += r - l + 1  # 合并区间st.append((end - d + 1, end, st[-1][2] + d))return st[-1][2]

时间复杂度:O(nlogn)
空间复杂度:O(n)

解题思路三:简化版

class Solution:def findMinimumTime(self, tasks: List[List[int]]) -> int:tasks.sort(key = lambda x: x[1])run = [False] * (tasks[-1][1] + 1)for s, e, d in tasks:d -= sum(run[s: e + 1]) # 先减去已经运行的时间if d <= 0: # 已经okcontinuefor i in range(e, s - 1, -1): # 还没okif run[i]:continuerun[i] = Trued -= 1if d == 0:breakreturn sum(run)

时间复杂度:O(nM)其中 n 是 tasks 的大小,M 是 tasks 的时间段右端点 end 的最大值。
空间复杂度:O(logn + M) 排序和记录的数组


创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac安装两个版本谷歌浏览器;在mac运行不同版本的chrome浏览器

场景 正常情况下&#xff0c;mac上只能安装一个版本的chrome浏览器&#xff0c;即使你安装了两个版本的&#xff0c;打开老旧版本时候也会自动切换成最新版的浏览器 故本文主要解决如何下载和在mac运行不同版本的chrome浏览器 文章目录 场景一、下载1.mac本身就有一个最新版ch…

Java语言saas模式云HIS系统源码 前端Angular+后台SpringBoot云HIS系统源码 HIS系统适合哪些类型的医院?

Java语言saas模式云HIS系统源码 前端Angular后台SpringBoot云HIS系统源码 HIS系统适合哪些类型的医院&#xff1f; 云HIS系统&#xff08;医院信息系统&#xff09;是对医院及其所属各部门的人、财、物进行综合管理&#xff0c;对在医疗活动各阶段产生的数据进行采集、储存、处…

CCF20181201——小明上学

CCF20181201——小明上学 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int r,y,g,n,k[101],t[101],sum0;cin>>r>>y>>g;cin>>n; for(int i0;i<n;i){cin>>k[i]>>t[i];if(k[i]0||k[i]1)sumt[i];…

ITSM的服务台如何让工作更流畅

在现代企业的信息技术管理框架内&#xff0c;IT服务管理&#xff08;IT Service Management, ITSM&#xff09;体系扮演着至关重要的角色&#xff0c;而其中的服务台则是这一复杂体系的心脏地带。服务台不仅仅是解答技术疑问的一线窗口&#xff0c;更是企业IT运维效率与用户满意…

FENDI CLUB啤酒,为何女生喜欢?

精酿啤酒已经成了女生喜欢的饮品&#xff0c;在日剧《无法成为野兽的我们》里&#xff0c;主人公小晶永远保持标准笑容&#xff0c;完美完成所有的工作。只有一个人的时候&#xff0c;她才会放下习惯性的微笑&#xff0c;显露自己的疲惫。小晶缓解疲惫&#xff0c;就是下班后去…

尽微好物:从0到10亿+的抖音电商的TOP1“联盟团长”,如何使用NineData实现上云下云

杭州尽微供应链是抖⾳平台⽉均带货10E的TOP1“联盟团⻓”&#xff0c;是字节跳动⼀级代理商&#xff0c;巨量千川指定服务商&#xff0c;拥有商品库9万&#xff0c;是⾏业领先的电商供应链平台&#xff0c;达⼈陪跑机构。 杭州尽微供应链以天猫、京东抖音电商业务为依托&#x…

HCIP-Datacom(H12-821)题库补充(5月16日)

最新 HCIP-Datacom&#xff08;H12-821&#xff09;完整题库请扫描上方二维码访问&#xff0c;持续更新中。 以下关于配置防火墙安全优先级的描述&#xff0c;错误的是哪一项&#xff1f; A&#xff1a;不新建与默认安全区域同名的安全区域 B&#xff1a;同一系统中&#xff0c…

镊子蜡烛如何设置止盈止损?Anzo Capital昂首资本盈利收场

通过上一篇文章各位聪明的投资者&#xff0c;都已经知道了什么是镊子蜡烛图以及如何抓住反转进行交易&#xff0c;同时也有很多投资者不知道如何设置止盈止损&#xff1f;今天Anzo Capital昂首资本就和各位投资者一起探讨如何盈利收场。 看跌的镊子模式如何交易&#xff1f;首…

【数据结构】树(Tree)

✨✨✨专栏&#xff1a;数据结构 &#x1f9d1;‍&#x1f393;个人主页&#xff1a;SWsunlight 目录 一、基本概念&#xff1a; 1、定义&#xff1a; ​编辑 ​编辑 2、树的成分&#xff1a; 3、树的性质&#xff1a; 二、存储方式&#xff1a; ​编辑 双亲表示法…

【C语言每日题解】用函数来模拟实现strlen()、strcpy()、strcmp()、strcat()

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ 学习了函数后&#xff0c;老师让我们用函数来实现上面这四个字符串函数。 我们首先来了解一下这四个字符串函数&#xff1a; 1.strlen函数 用于获取字符串长度&#xff08;不包括末尾…

【源码】相亲交友系统全新UI/情感测试/婚庆中介/交友系统

【交友】相亲交友系统全新UI/情感测试/婚庆中介/交友系统 带商城&#xff0c;情感测试。 https://www.52codes.cc/codes/qt

从开发板导出根文件系统并修改(Ubuntu)

前面提到过基于ubuntu-base去构建根文件系统基于Ubuntu-base构建根文件系统-CSDN博客&#xff0c;但是有时候我们并不需要重头开始&#xff0c;可以基于现有的根文件系统做调整。又或者我们直接在出厂的系统上去搭建好自己的运行环境并且编译出自己想要的程序&#xff0c;现在要…

医学科技查新中对查新点的撰写方法!附案例讲解!

我国的科技查新工作最早是从医学领域开始的&#xff0c;始于1985年中国科学院医学情报所&#xff0c;后来逐步发展到工、农等其 他各个领域。医学科技查新包括立项查新和成果查新两个部分&#xff0c;其中医学立项查新&#xff0c;它是指在医学科研项目申报开题之前&#xff0c…

上海初中生古诗文大会倒计时4个月:单选题真题示例和独家解析

现在距离2024年初中生古诗文大会还有4个多月时间&#xff0c;备考要趁早&#xff0c;因为知识点还是相对比较多的。这些知识点对于初中语文的学习也是很有帮助的。 今天我们继续来看10道选择题真题和详细解析&#xff0c;以下题目截取自我独家制作的在线真题集&#xff0c;都是…

取名时,要考虑生肖的影响

亲爱的宝宝们&#xff0c;又是一年五一小长假&#xff0c;峰民想大家都在休假吧&#xff01;真幸福&#xff01;峰民每天都在工作&#xff0c;几乎没有休过假&#xff0c;因为每天全国各地找我们取名改名客户是络绎不绝&#xff0c;峰民虽然也很辛劳&#xff0c;但也很有成就感…

【c++算法篇】滑动窗口

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;算法笔记仓 目录 1.长度最小的子数组2.无重复字符的最长子串3.最大连续1的个数 III4.将 x 减到 0 的最小操作数5.水果成篮6.找到字符串中所有字母异位词7.串联所有单词的子串8.最小覆盖子串 滑动窗…

李宏毅-Self-attention机制详解

原视频链接&#xff1a;attention 一. 基本问题分析 1. 模型的input 无论是预测视频观看人数还是图像处理&#xff0c;输入都可以看作是一个向量&#xff0c;输出是一个数值或类别。然而&#xff0c;若输入是一系列向量&#xff0c;长度可能会不同&#xff0c;例如把句子里的…

C 深入指针(4)

目录 一、字符指针变量 1 初始化 2 与字符串数组的区别 二、数组指针变量 1 初始化 2 二维数组传参本质 三、函数指针变量 1 初始化 2 用法 四、typedef关键字 五、函数指针数组 一、字符指针变量 1 初始化 //VS2022 x64 #include <stdio.h> int main() {…

人形机器人场景应用全解析,2024睿抗 AI ROBOT创新挑战赛火热报名中!

人工智能&#xff08;AI&#xff09;已成为推动科技革命和产业变革的关键力量。随着大模型等AIGC技术的迅猛发展&#xff0c;AI正深刻改变我们的生活并重新定义生产方式。越来越多人期望将AI技术从纯粹的思维和计算扩展到与物理世界的互动中&#xff0c;即发展具身智能。 为了推…

探索中国文本到视频AI模型——Vidu

引言 随着人工智能技术的不断进步&#xff0c;我们见证了从文本到视频内容生成的革命。最近&#xff0c;一个名为Vidu的中国文本到视频AI模型引起了全球的关注。由清华大学和中国AI初创公司声书科技联合开发的Vidu&#xff0c;于2024年4月27日宣布&#xff0c;它声称能够生成高…