1665. 完成所有任务的最少初始能量

【贪心+排序】ti [ai, mi]

如果按照顺序t0,t1那么t01:

e > m0

e - a0 > m1             e > max(m0, a0 + m1)

如果按照顺序t1,t0那么t10:

e > m1

e - a1 > m0            e > max(m1, a1 + m0)

假设t01的顺序比t10更优,那么需要e01 <= e10,即max(m0, a0 + m1) <= max(m1, a1 + m0),假设a0 + m1 < a1 + m0,即:m0 - a0 > m1 - a1成立

这时,当m0 >= m1时,max(m0, a0 + m1) == m0,max(m1, a1 + m0) == m0 + a1,是成立的

当m0 < m1时,max(m0, a0 + m1) == a0 + m1,max(m1, a1 + m0) == a1 + m0,也是成立的

所以最优解是按照t[1] - t[0]从大到小排序的。

class Solution {// 贪心 4:39// ti = [ai, mi]// t01:// e > m0          e > m0// e - a0 > m1     e > m1 + a0        m0 < m1// e - a0 - a1 > m2  e > m2 + a0 + a1// t10:                               a0 < a1// e > m1          e > m1// e - a1 > m0     e > m0 + a1// m1 + a0 < m0 + a1 and m0 < m1// m0 - a0 > m1 - a1 and m0 < m1public int minimumEffort(int[][] tasks) {int ans = 0, per = 0;Arrays.sort(tasks, (a, b)-> {int c = a[1] - a[0];int d = b[1] - b[0];if (c > d) return -1;else if (c == d) return a[1] - b[1];return 1;});for (var t: tasks) {if (per < t[1]) {int d = t[1] - per;per += d;ans += d;} per -= t[0];}return ans;}
}

LeetCode 1665. 完成所有任务的最少初始能量相关推荐

  1. LeetCode 1665. 完成所有任务的最少初始能量(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个任务数组 tasks ,其中 tasks[i] = [actuali, minimumi] : actuali 是完成第 i 个任务 需要耗费 的 ...

  2. 1665 完成所有任务的最少初始能量

    题目描述: 给你一个任务数组 tasks ,其中 tasks[i] = [actuali, minimumi] : actuali 是完成第 i 个任务 需要耗费 的实际能量. minimumi 是开 ...

  3. LC1665. 完成所有任务的最少初始能量(推公式贪心)

    题目地址 假设当前最少能完成所需的能量为P. 且:当前任务的序列为(a1,m1) - (a2,m2)-(an,mn) 则 p >= m 1 m_1 m1​ p >= a 1 a_1 a1​ ...

  4. LeetCode 921. 使括号有效的最少添加(栈)

    1. 题目 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字 ...

  5. LeetCode 1674. 使数组互补的最少操作次数(差分思想)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit . 每一次操作,你可以将 nums 中的任何整数替换为 1 到 limit 之间的 ...

  6. LeetCode 6055. 转化时间需要的最少操作数(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 current 和 correct ,表示两个 24 小时制时间 . 24 小时制时间 按 "HH:MM" 进行格式化 ...

  7. LeetCode 1733. 需要教语言的最少人数(哈希+枚举)

    文章目录 1. 题目 2. 解题 1. 题目 在一个由 m 个用户组成的社交网络里,我们获取到一些用户之间的好友关系. 两个用户之间可以相互沟通的条件是他们都掌握同一门语言. 给你一个整数 n ,数组 ...

  8. LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)

    文章目录 1. 题目 2. 解题 2.1 n^2 解法 2.2 nlogn 解法 197 / 1891,前10.4% 435 / 6154,前7.07% 前三题如下: LeetCode 5557. 最 ...

  9. LeetCode 1653. 使字符串平衡的最少删除次数(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s ,它仅包含字符 'a' 和 'b'​​​​ . 你可以删除 s 中任意数目的字符,使得 s 平衡 . 我们称 s 平衡的 当不存在下标 ...

最新文章

  1. python自学教程推荐-学习python中的pandas有没有好的教程推荐?
  2. 数据集特征提取_基于PCA算法实现鸢尾花数据集的特征提取任务
  3. 11_CollapsingMergeTree,(State行和Cancel行匹配示例),聚合查询,Cancel状态行取反的聚合查询
  4. C语言学习之插入排序
  5. 三角学——极坐标_2
  6. Python版双链表结构与有关操作
  7. SpringBoot通过配置文件自动加载到map中
  8. jQuery学习(一):鼠标移动显示大图
  9. linux默认网关地址,linux shell 获取默认网关地址
  10. 如何写出让人眼前一亮的硬核简历
  11. DE 31 Non-linear Autonomous Systems
  12. 快逸报表传递中文参数乱码解决
  13. CAD制图初学入门:使用CAD切换窗口
  14. 使用cephadm搭建ceph(octopus)过程
  15. 闪讯 padavan 配置
  16. Transformers库pipeline API的使用
  17. 这几excel操作技巧,每一个都是大神和菜鸟的分水岭!
  18. c语言校友通讯录毕业论文,校友录毕业论文(C_+sql2005).doc
  19. 色阶的中间调调节原理之一
  20. vue3bug-Invalid vnode type when creating vnode: null.

热门文章

  1. 【C++学习笔记】标准库类型vector
  2. 在服务器上如何打开aspx文件,aspx是什么文件_aspx用什么软件打开
  3. Mysql——》三星索引
  4. Chrome DevTools 通过 cdp 调节 CPU Throttling
  5. 【习题5】用Python完成新建文档写古诗+复制
  6. 联通假4G欺骗消费者!
  7. 星河智联Android开发
  8. 用计算机计算圆的面积,周长直径换算器在线(圆的面积在线计算器)
  9. 主流智能手机屏幕材质介绍 及 LCD闪屏现象分析
  10. 微信里的网址链接域名如何自动跳转到外部浏览器访问源码