1011. 在 D 天内送达包裹的能力
题目地址(1011. 在 D 天内送达包裹的能力)
https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/
题目描述
前置知识
二分法
公司
阿里
思路
题目给定了 weights 长度 <= 50000,因此大概就可以锁定为 nlogn 解法。为啥?大家可以看下我的插件就知道了。另外我的插件还提供了多种规模的复杂度速查表。地址:https://leetcode-pp.github.io/leetcode-cheat/?tab=data-structure-vis
这道题和猴子吃香蕉 简直一摸一样,没有看过的建议看一下那道题。
这种题都是简单的能力检测二分,如果不懂的,建议看下西法之前写过的二分专题,写的可详细了。
像这种题如何你能发现本质的考点,那么 AC 是瞬间的事情。 这道题本质上就是从 1,2,3,4,。。。total(其中 toal 是总的货物重量)的有限离散数据中查找给定的数。这里我们不是直接查找 target,而是查找恰好能够在 D 天内运完的载货量。
容量是 1 可以运完么?
容量是 2 可以运完么?
容量是 3 可以运完么?
。。。
容量是 total 可以运完么?(当然可以,因为 D 大于等于 1)
上面不断询问的过程如果回答是 yes 我们直接 return 即可。如果回答是 no,我们继续往下询问。
这是一个典型的二分问题,只不过我们的判断条件略有不同,大概是:
这其实就是我二分专题里的最左二分,大家直接套这个模板就行了。
关键点解析
能力检测二分
代码
语言支持:JS,Python
Python Code:
JS Code:
复杂度分析
令 n 为 weights 长度。
时间复杂度:$O(nlogn)$
空间复杂度:$O(1)$
此题解由 力扣刷题插件 自动生成。
力扣的小伙伴可以关注我,这样就会第一时间收到我的动态啦~
以上就是本文的全部内容了。大家对此有何看法,欢迎给我留言,我有时间都会一一查看回答。更多算法套路可以访问我的 LeetCode 题解仓库:https://github.com/azl397985856/leetcode 。 目前已经 40K star 啦。大家也可以关注我的公众号《力扣加加》带你啃下算法这块硬骨头。
关注公众号力扣加加,努力用清晰直白的语言还原解题思路,并且有大量图解,手把手教你识别套路,高效刷题。
最后更新于