魔法师 (@Constanline) 在 Leetcode每日一题 —— 1665. 完成所有任务的最少初始能量 中发帖
思路
我一开始的思路是,按差值降序排列,优先完成差值最大的任务,然后累计实际消耗并尽可能的复用这份差值。
结果写代码的时候直接tab出来了,而且比我的思路还简单。 🤣
看起来思路应该是,按差值升序排列,从差额最小的任务开始累计,每次在必要能量(ans+task[0])与最低能量(task[1])中取最大值以保证本次任务能够进行。
代码
public int minimumEffort(int[][] tasks) {
Arrays.sort(tasks, Comparator.comparingInt(a -> (a[1] - a[0])));
int ans = 0;
for (int[] task : tasks) {
ans = Math.max(ans + task[0], task[1]...