[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;
    }
}
相关推荐
小O的算法实验室13 分钟前
2026年SEVC SCI2区,面向无人机路径规划的领域专用算子进化算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
weixin_4772716916 分钟前
同人象:(两军停战谈判结盟的现场直播)马王堆帛书《周易》原文及甲骨文还原周朝生活现象《函谷门
算法·图搜索算法
nudt_qxx32 分钟前
CUDA编程模型与硬件执行层级对应关系
linux·人工智能·算法
zheshiyangyang1 小时前
前端面试基础知识整理【Day-7】
前端·面试·职场和发展
m0_531237171 小时前
C语言-分支与循环语句练习2
c语言·开发语言·算法
AIpanda8881 小时前
什么是AI销冠系统和AI提效软件系统?主要区别和应用场景是什么?
算法
香芋Yu1 小时前
【大模型面试突击】02_Transformer与注意力机制
面试·职场和发展·transformer
程序员酥皮蛋1 小时前
hot 100 第三十三 33.排序链表
数据结构·算法·链表
蚊子码农1 小时前
算法题解记录-2452距离字典两次编辑以内的单词
开发语言·算法·c#
重生之后端学习1 小时前
207. 课程表
java·数据结构·算法·职场和发展·深度优先