完成所有任务的最少时间 - (LeetCode)

server/2024/10/11 5:28:18/

前言

今天也是很无精打采的一天,早上看到这道题,都有点懵逼,开始也不懂如何入手,既然自己搞不定,就顺便测试了一下AI吧,测试了通义千问和文心一言,把题目拿去那里问,可以把解题思路写出来,代码也写了,但是我拿到AI的代码来运行,发现2个平台的代码都是运行不通过的,说明AI对这种算法题,是不对的,AI测试了一轮,只好自己去理解了,看了一下AI的代码,给自己一些思路,按照自己的思路去优化代码最终通过。

题目

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. 按照end时间进行排序
  2. mark数组标记那些时刻已经被使用了。
  3. 遍历每一个task,按照该task的执行时间段从大到小占用时刻,直到满足时间占用==duration为止。

代码

class Solution {public int findMinimumTime(int[][] tasks) {// 按照结束时间排序Arrays.sort(tasks, Comparator.comparingInt(a -> a[1]));int ans = 0; // 电脑的总运行时间boolean[] used = new boolean[2024];for (int[] task : tasks) {int start = task[0];int end = task[1];int duration = task[2];for (int j = start; j <= end; j++) {if (used[j]) {duration--;}}for (int j = end; duration > 0; j--) {if (!used[j]) {ans++;used[j] = true;duration--;}}}return ans;}
}

每一次的记录,都是一次学习。


http://www.ppmy.cn/server/42265.html

相关文章

【Linux:进程概念】

目录 了解冯诺依曼思想&#xff1a; 操作系统如何管理软硬件资源&#xff1f; 进程与程序的区别 了解冯诺依曼思想&#xff1a; 1.所有的数据采用二进制的存储 2.数据存储在内存中 CPU处理器只做俩种运算&#xff1a;逻辑&&算数运算 操作系统的组成&#xff1f;…

使用numpy或pytorch校验两个张量是否相等

文章目录 1、numpy2、pytorch 做算法过程中&#xff0c;如果涉及到模型落地&#xff0c;那必然会将原始的深度学习的框架训练好的模型转换成目标硬件模型的格式&#xff0c;如onnx,tensorrt,openvino,tflite;那么就有对比不同格式模型输出的一致性&#xff0c;从而判断模型转换…

【计算机毕业设计】基于SSM++jsp的学院党员管理系统【源码+lw+部署文档+讲解】

目录 目 录 第1章 绪论 1.1 课题背景 1.2 课题意义 1.3 研究内容 第2章 开发环境与技术 2.1 MYSQL数据库 2.2 JSP技术 2.3 SSM框架 第3章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删…

Jmeter用jdbc实现对数据库的操作

我们在用Jmeter进行数据库的操作时需要用到配置组件“JDBC Connection Configuration”&#xff0c;通过配置相应的驱动能够让我们通过Jmeter实现对数据库的增删改查&#xff0c;这里我用的mysql数据库一起来看下是怎么实现的吧。 1.驱动包安装 在安装驱动之前我们要先查看当前…

MySQL事务(一)

事务是什么 在MySQL中&#xff0c;事务是一组操作&#xff0c;这些操作要么全部执行成功&#xff0c;要么全部失败。事务的主要目的是保证数据的一致性和完整性。它确保当我们对数据库进行一系列操作时&#xff0c;要么所有操作都生效&#xff0c;要么如果其中任何一个操作失败…

【八十七】【算法分析与设计】单调栈全新版本,右大于,左小于右小于等于,739. 每日温度,907. 子数组的最小值之和

739. 每日温度(右大于) 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示…

github新手用法

目录 1&#xff0c;github账号注册2&#xff0c;github登录3&#xff0c;新建一个仓库4&#xff0c;往仓库里面写入东西或者上传东西5&#xff0c; 下载Git软件并安装6 &#xff0c;获取ssh密钥7&#xff0c; 绑定ssh密钥8&#xff0c; 测试本地和github是否联通9&#xff0c;从…

Vue 之 后台管理系统的权限路由的管理

目录 前言实现理解三者的概念以及之间的关联账号&#xff08;用户&#xff09;角色菜单 用户权限授权相关概念实现代码实现登录跳转路由&#xff0c;路由守卫中进行权限验证按钮权限封装指令&#xff1a;调用&#xff08;其中一个页面参考&#xff09; 思路&#xff0c;操作流程…