LeetCode 每日一题笔记 日期:2026.05.12 题目:1665. 完成所有任务的最少初始能量
LeetCode 每日一题笔记0. 前言日期2026.05.12题目1665. 完成所有任务的最少初始能量难度中等标签数组、贪心、排序1. 题目理解问题描述给定二维数组tasks其中tasks[i] [实际消耗, 最低要求]。执行第 i 个任务必须满足当前能量 ≥ 最低要求。执行后能量会减去实际消耗。求完成所有任务需要的最小初始能量。示例输入tasks [[1,2],[2,4],[3,6],[4,8]]输出82. 解题思路核心观察贪心策略按最低要求 - 实际消耗降序排序先做“差值大”的任务最后做“差值小”的任务能让初始能量最小算法步骤排序按(b - a)从大到小排序任务先计算所有任务的总实际消耗理论最低下限模拟执行任务若当前能量不够最低要求补充差值最终得到最小初始能量3. 代码实现packagelc1665;importjava.util.Arrays;classSolution{publicintminimumEffort(int[][]tasks){Arrays.sort(tasks,(row1,row2)-{return(row2[1]-row2[0])-(row1[1]-row1[0]);});intres0;for(inti0;itasks.length;i){restasks[i][0];}inttempres;for(inti0;itasks.length;i){if(temptasks[i][1]){temp-tasks[i][0];}else{restasks[i][1]-temp;temptasks[i][1]-tasks[i][0];}}returnres;}}4. 代码优化说明贪心排序一次完成无额外数据结构仅两次遍历无嵌套循环空间 O(1) 额外空间时间最优5. 复杂度分析时间复杂度O(n log n)排序主导复杂度空间复杂度O(1)仅使用常数变量6. 总结贪心核心按 (b - a) 降序排列先算总消耗再模拟补足不足是任务门槛类贪心的经典模板题