本文共 1412 字,大约阅读时间需要 4 分钟。
为了找到完成所有任务的最少初始能量,我们可以采用二分查找结合任务排序的方法。以下是详细的解决方案:
import java.util.Arrays;import java.util.Comparator;class Solution { public int minimumEffort(vector > tasks) { int left = 0; int right = (int) 0; for (int i : tasks) { left = Math.max(left, i[1]); right += i[0]; } while (left < right) { int mid = (left + right) / 2; if (check(mid, tasks)) { right = mid; } else { left = mid + 1; } } return left; } private boolean check(int mid, vector > tasks) { sort(tasks.begin(), tasks.end(), [](const vector & a, const vector & b) { return a[0] - a[1] < b[0] - b[1]; }); int current = mid; for (const vector & task : tasks) { if (current < task[1]) { return false; } current -= task[0]; } return true; } } 通过这种方法,我们可以高效地找到完成所有任务所需的最少初始能量。
转载地址:http://stkv.baihongyu.com/