int getDays(int* weights, int weightsSize, int mid)
{
int days = 1;
int count = 0;
for (int i = 0; i < weightsSize; i++) {
if ((count + weights[i]) > mid) {
days++;
count = 0;
}
count += weights[i];
}
return days;
}
int shipWithinDays(int* weights, int weightsSize, int days)
{
int left = 0;
int right = 0;
int mid;
for (int i = 0; i < weightsSize; i++) {
left = left > weights[i] ? left : weights[i];
right += weights[i];
}
while (left < right) {
mid = (right + left) / 2;
int tmpDays = getDays(weights, weightsSize, mid);
if (tmpDays > days) {
left = mid + 1; // 实际需要的天数比限定的多, 说明少了
} else {
right = mid;
}
}
return right;
}
leetcode: 1011. 在 D 天内送达包裹的能力
最新推荐文章于 2024-08-02 16:56:20 发布