| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> LeetCode 875. Koko Eating Bananas - 二分查找(Binary Search)系列题20 -> 正文阅读 |
|
[数据结构与算法]LeetCode 875. Koko Eating Bananas - 二分查找(Binary Search)系列题20 |
Koko loves to eat bananas. There are? Koko can decide her bananas-per-hour eating speed of? Koko likes to eat slowly but still wants to finish eating all the bananas before the guards return. Return?the minimum integer? Example 1: Input: piles = [3,6,7,11], h = 8 Output: 4 Example 2: Input: piles = [30,11,23,4,20], h = 5 Output: 30 Example 3: Input: piles = [30,11,23,4,20], h = 6 Output: 23 Constraints:
这题跟LeetCode 1760. Minimum Limit of Balls in a Bag?是一样的题型,只是变成了猴子吃香蕉。熟练掌握二分查找法就可以搞定Leetcode上所有这一类型的题。 题目大意:给定一个数组piles, 数组的长度n表示有n堆香蕉,第i个元素表示第i堆里有piles[i]根香蕉。现在猴子Koko想趁管理员离开时偷吃香蕉,管理将离开h小时。猴子Koko很聪明可以自己决定吃香蕉的速度k根每小时,即每个小时它可以选一堆香蕉来并吃掉k根,如果这堆香蕉根数多于k根它最多只能吃掉k根,剩下的只能在下次选到时再吃,如果这堆香蕉根数少于k根那没办法它也只能把这堆香蕉全吃掉然后停下而不能再吃其它堆里的香蕉,只能等到下个小时再选一堆来吃。现在猴子想在每个小时里尽可能慢点吃不至于撑到(k尽可能小)但又想在h小时内把所有香蕉吃完。求最慢的吃香蕉速度也就是最小的k。 搞懂题目就会发现其实这题跟LeetCode 1760. Minimum Limit of Balls in a Bag?一模一样。最理想的状态就是每个小时只吃一根慢慢吃;最不理想的状态香蕉可能很多,为了不至于来不及需要每个小时把整堆香蕉全吃光,那么速度k就是最大堆的香蕉根数。因此我们要做的就是从1到piles里的最大值maxNum的区间范围内找到一个最小的且满足条件的值,这很自然地想到了二分查找法。 取[1, maxNum]的中间值mid=(1 + maxNum) // 2,计算当速度为mid根每小时要吃几个小时才能把所有香蕉吃完,要是总时间小于等于h小时,说明还有可能吃更慢点,则继续在左半区间查找可能的更慢的速度;要是总时间大于h小时说明无法吃完所有香蕉,则继续在右半区间查找更快的速度。 如何判断速度为mid 时需要几个小时才能吃完所有香蕉?遍历整个数组piles,如果香蕉根数num小于等于mid则只需要1个小时,如果香蕉根数num大于mid,则需要小时数为(num - 1) // mid + 1。
? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 17:48:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |