[Leetcode 875][Medium]-爱吃香蕉的珂珂-二分搜索

目录

一、题目描述

[二 、整体思路](#二 、整体思路)

[三 、代码](#三 、代码)


一、题目描述

原题地址

二 、整体思路

题目要求在时间h内(含h),求解最小速度k。那么首先要知道速度与吃香蕉所用时间的关系。

假设速度为k,那么吃香蕉所用时间t就等于每堆香蕉piles[i]除以速度k所得的向上取整的商之和。

下一步,找出最小的k。同时发现k的上限是max(piles[i]),下限是1。根据上述公式发现k与t存在单调性。因此可以用二分搜索,找出>=h对应的速度的k的最小值。具体来说就是k对应的时间t=h时,要让k尽量小。k对应的时间t<=h时,说明mid值可能为答案,要保留,同时继续寻找潜在的比mid更小的k即r=mid。k对应的时间t>h时,说明当前吃香蕉速度k不够大,因此l=mid+1。

三 、代码

java 复制代码
class Solution {
    public int minEatingSpeed(int[] piles, int h) {

        int l=1,r=0;
        for(int pile:piles){
            r=Math.max(pile,r);
        }
        //求解>=h对应的speed的最小值
        while(l<r){
            int mid=l+(r-l)/2;
            if(eatingtime(mid,piles)<=h) r=mid;
            else l=mid+1;
        }
        return l;
    }
    public int eatingtime(int k,int[] piles){
        int ans=0;
        for(int i=0;i<piles.length;i++){
            ans+=(piles[i]-1)/k+1;
        }
        return ans;
    }
}
相关推荐
颜如玉1 小时前
位运算技巧总结
后端·算法·性能优化
冷月半明1 小时前
时间序列篇:Prophet负责优雅,LightGBM负责杀疯
python·算法
秋难降2 小时前
聊聊 “摸鱼式” 遍历 —— 受控遍历的小心机
数据结构·算法·程序员
等风来不如迎风去2 小时前
【动态规划】309. 买卖股票的最佳时机含冷冻期及动态规划模板
算法·动态规划
独行soc4 小时前
2025年渗透测试面试题总结-29(题目+回答)
web安全·职场和发展·渗透测试·单元测试·压力测试
小xin过拟合6 小时前
day20 二叉树part7
开发语言·数据结构·c++·笔记·算法
nonono6 小时前
数据结构——线性表(链表,力扣中等篇,技巧型)
数据结构·leetcode·链表
lxmyzzs7 小时前
【图像算法 - 23】工业应用:基于深度学习YOLO12与OpenCV的仪器仪表智能识别系统
人工智能·深度学习·opencv·算法·计算机视觉·图像算法·仪器仪表识别
Learn Beyond Limits7 小时前
Multi-output Classification and Multi-label Classification|多输出分类和多标签分类
人工智能·深度学习·神经网络·算法·机器学习·分类·吴恩达
张较瘦_7 小时前
[论文阅读] 软件工程 | GPS算法:用“路径摘要”当向导,软件模型检测从此告别“瞎找bug”
论文阅读·算法·bug