1011. 在 D 天内送达包裹的能力

传送带上的包裹必须在 days 天内从一个港口运送到另一个港口。

传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量(weights)的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。

返回能在 days 天内将传送带上的所有包裹送达的船的最低运载能力。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

import java.util.Arrays;

class Solution {

    private boolean ok(int[] weights, int days, int limit) {
        int num = 1;
        int sum = 0;
        for (int i = 0; i < weights.length; ++i) {
            sum += weights[i];
            if (sum > limit) {
                sum = weights[i];
                num++;
                if (num > days) {
                    return false;
                }
            }
        }
        return true;
    }

    public int shipWithinDays(int[] weights, int days) {
        int left = Arrays.stream(weights).max().getAsInt(), right = Arrays.stream(weights).sum();
        int ans = right;
        while (left <= right) {
            int mid = (left + right) >> 1;
            if (ok(weights, days, mid)) {
                ans = mid;
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return ans;
    }
}
上一篇:Odoo 微信公众号 模块


下一篇:从键盘分别输入年、月、日,判断这一天是当年的第几天