1011:对任意 i,有 capacity > weight[i],即一天至少运一箱货
875:对任意 i,有 pile[i] >= speed,即一小时最多吃一堆香蕉
class Solution { public int shipWithinDays(int[] weights, int days) { int max = 0, sum = 0; for (int weight : weights) { max = Math.max(max, weight); sum += weight; } int left = max, right = sum; while (left < right) { int mid = left + (right - left) / 2; if (canDeliverWithinDays(weights, mid, days)) { // 对应mid[i] >= target right = mid; } else { left = mid + 1; } } return left; } boolean canDeliverWithinDays(int[] weight, int capacity, int days) { int currentWeightSum = 0, cntOfDay = 1; for (int w : weight) { currentWeightSum += w; if (currentWeightSum > capacity) { currentWeightSum = w; cntOfDay++; } } return cntOfDay <= days; }}
Binary Search