本文主要是介绍[算法][贪心算法][数组][leetcode]2589. 完成所有任务的最少时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目地址
https://leetcode.cn/problems/minimum-time-to-complete-all-tasks/description/
思路
题解
public static int findMinimumTime(int[][] tasks) {//先将数数组进行尾端升序排列Arrays.sort(tasks, (a, b) -> a[1] - b[1]);int ans = 0;//计算得到数组中最大的值,也就是数组的末端最大值int mx = tasks[tasks.length - 1][1];//以数组的末端最大值创建一个标记数组boolean[] run = new boolean[mx + 1];for (int[] t : tasks) {int start = t[0];int end = t[1];int d = t[2];for (int i = start; i <= end; i++) {if (run[i]) {// 去掉运行中的时间点(也就是数组中相交的点)d--;}}// 剩余的 d 填充区间后缀for (int i = end; d > 0; i--) {if (!run[i]) {// 运行run[i] = true;d--;ans++;}}}return ans;}public static void main(String[] args) {int[][] task = new int[][]{{4,5,1},{2,3,1},{1,5,2}};findMinimumTime(task);}
这篇关于[算法][贪心算法][数组][leetcode]2589. 完成所有任务的最少时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!