【LeetCode】在 D 天内送达包裹的能力 Java 题解
题目描述
传送带上的包裹必须在 days 天内从一个港口运送到另一个港口。
传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量(weights)的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。
返回能在 days 天内将传送带上的所有包裹送达的船的最低运载能力。
复制代码
思路分析
今天的算法每日一题是包裹运输问题,这是一个很贴近实际的问题,问题很好。
题目要求求解的是,**能在 days 天内将传送带上的所有包裹送达的船的最低运载能力。**也就是对于公司来说收益最高的点。按照常规思维,结合贪心思想,遍历 weights,分别找到运力的最小值和最大值。在这个区间范围内,结合与 D 天的比较情况,采用二分查找,从而确定第一个运力和时间的平衡点。实现代码如下:
通过代码
复制代码
总结
上述算法的时间复杂度是 O(log n), 空间复杂度是 O(1)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/2250cd0b6b70d377e5a0a582d】。文章转载请联系作者。
评论