本文主要是介绍【LeetCode刷题】875. 爱吃香蕉的珂珂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 题目链接
875. 爱吃香蕉的珂珂
2. 题目描述
3. 解题方法
简单的用我自己的理解来解释一下这道题的意思。
所以也就是说找到一个速度k,看还有没有比k更小的速度能吃完数组中的香蕉,如果有则继续寻找,没有则是k这个速度。就好比上面的解释说明,其实k = 5这个速度也是可以的,但是题目说明要找吃掉所有香蕉的最小速度。
此时就是从1 ~ 1e9这些速度中找吃完所有香蕉的最小速度,也就是用二分查找来解决。
4. 代码
class Solution {
public:int minEatingSpeed(vector<int>& piles, int h) {// 从1 ~ 1e9的来找速度int l = 1, r = (int)1e9;while(l < r){// 防止溢出问题int mid = (r - l) / 2 + l;// 检查速度是否符合题意if(check(mid, piles, h)) r = mid;else l = mid + 1;}return r;}bool check(int mid, vector<int>& piles, int h){int cnt = 0;for(auto e : piles){cnt += e / mid;if(e % mid != 0) cnt ++;}return cnt <= h;}
};
这篇关于【LeetCode刷题】875. 爱吃香蕉的珂珂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!