力扣1011.在D天内送达包裹的能力
问题
传送带上的包裹必须在 D
天内从一个港口运送到另一个港口。
传送带上的第 i
个包裹的重量为 weights[i]
。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。
返回能在 D
天内将传送带上的所有包裹送达的船的最低运载能力。
示例 1:
1 | 输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5 |
示例 2:
1 | 输入:weights = [3,2,2,4,1,4], D = 3 |
示例 3:
1 | 输入:weights = [1,2,3,1,1], D = 4 |
提示:
1 | 1 <= D <= weights.length <= 50000 |
来源:链接
解答
二分法
二分查找,根据题意,结果一定落在【max(weights), sum(weights)】这个区间之间,因为左端点对应每天一条船,右端点对应只有一条超级大船。 然后利用二分法,每一次循环模拟运货的过程,然后根据需要的天数与 输入 D 的关系来调整区间左右端点。
1 | class Solution: |