leecode875 爱吃香蕉的珂珂

【C++二分查找】875. 爱吃香蕉的珂珂 珂珂喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 h 小时后回来。 珂珂可以决定她吃香蕉的速度 k (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 k 根。如果这堆香蕉少于 k 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 h 小时内吃掉所有香蕉的最小速度 k(k 为整数)。 阅读详情

在这里插入图片描述

我的思路

题目的类型就是查找一个最小速度,即找出来一个速度k,使得当速度>=k的时候,这个珂珂就能够顺利吃掉所有的香蕉,而我们知道二分查找算法可以找到满足条件最小一个数,即>=k。

这个条件就是当速度为k的时候可以吃完这些香蕉

这个题疑难点

  1. 判断出这个题属于二分查找算法类型

  2. 确定这个二分查找算法的边界(使用左开右开,这样方便,不用对这个right和left的最后结果做判断了)

    1. 左开就是left=0,右开就是找到这个数组的最大值,然后+1即可
  3. 在二分查找的时候我们要判断当前的数是否满足条件

    1. 这个条件就是当我们使用这个k速度吃香蕉的时候,能否吃完

    2. 此时我们需要遍历这个堆,然后计算此时的次数,这个地方涉及了一个整数向上取整。

      1. ⌈nummid⌉=num+mid−1mid \left\lceil\frac{\mathit{num}}{\mathit{mid}}\right\rceil=\frac{\mathit{num}+ \mathit{mid}-1}{\mathit{mid}} ⌈midnum​⌉=midnum+mid−1​
      2. 这个是整数的向上取整公式,我们可以给这个num加入一个比mid只小1的数,这样就可以保证向上取整了,比如说,5/3 = 1 但是(5+3-1)/3=2

代码如下所示

public int minEatingSpeed(int[] piles, int h) {
    //题目难点是如何做到最小
    int right = 0,left=0;
    for(int p:piles){
        right = Math.max(right,p);
    }

    while(left+1<right){
        int mid = left+(right-left)/2;
        if(find(piles,mid,h)){
            right = mid ;
        }else{
            left = mid;
        }
    }
    
    return right;
}
public boolean find(int[] piles,int mid,int h){
    int count = piles.length;
    for(int num:piles){
        count+=(num-1)/mid ;
        if(count>h){
            return false;
        }
    }
    return true;
}

灵神的思路

我和灵神思路一样

嵌入式工程师成长之路(10)——项目举例 送给大学毕业后找不到奋斗方向的你(每周不定时更新) 阅读详情

相关推荐

ARM 汇编指令:LSL(逻辑左移) 和 LSR(逻辑右移)

ARM 汇编中的 LSL(逻辑左移)和 LSR(逻辑右移)是基础移位指令,分别实现二进制位的左移和右移操作。LSL 低位补0,等效于乘以2^n;LSR 高位补0,等效于无符号除以2^n。这两个指令可以单独使用或与其他指令结合(如ADD、MOV等),利用ARM的"桶形移位器"硬件实现高效运算。关键特性包括:移位范围0-31(LSL)或1-32(LSR),可选更新标志位,以及与其他指令结合时的无额外开销优势。LSR与ASR(算术右移)的主要区别在于高位填充方式,分别适用于无符号和有符号数处理

guigenyi的专栏 1810

Leecode 875. 爱吃香蕉的珂珂 二分

原题链接:Leecode 875. 爱吃香蕉的珂珂 class Solution { public: int Count(vector<int>& piles,int mid) { int c=0,l=0; while(piles[l]<=mid) l++; for(int i=l;i<piles.size();i++) { int t=piles[i]%mid;

想买很多漂亮衣服但是买不起的博客 241

Python实战:动态爬取国家地表水水质实时监测数据(附最新代码解析)

本文详细介绍了使用Python动态爬取国家地表水水质实时监测数据的实战方法。针对动态网站数据加载特点,重点解析了如何利用Selenium模拟浏览器操作、结合BeautifulSoup解析数据,并提供了最新的代码实现与常见问题解决方案,帮助开发者高效获取环境监测数据。

app77的博客 273

LeetCode 875. 爱吃香蕉的珂珂--二分查找

爱吃香蕉的珂珂 珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。 示例 1: 输入: piles = [3,6,7,11], H =.

weixin_43918046的博客 315

基于单片机的自动喷淋系统设计【毕业设计】

随着人民生活质量提高与生活节奏的加快,城市居民对于花草绿植的家庭培养与装饰需求增加,随之因浇灌植物的需要,智能浇花系统的市场逐渐扩大。现有自动浇花系统大部分只能通过设置固定浇水时间而难以实现适时、适量浇水,或在植物环境土壤含水量低时进行报警而并不能实际补水。为克服局限性而设计以单片机为控制中心的自动浇花系统。通过湿度传感器检测目标植物环境土壤湿度数据,再经ADCO832将其放大转换为数字量,由单片机读取输出向LCD1602 显示屏显示并通过比对键盘向单片机所设置的湿度范围而利用中断服务程序进行补水需求判断。

qq_48771816的博客 1711

【漏洞复现】爱数云盘 Usrm_GetAllUsers 未授权访问漏洞

爱数 AnyShare存在未授权漏洞,未授权的攻击者可以通过该漏洞获取用户名信息。

qq_67810151的博客 3121

875. 爱吃香蕉的珂珂

题目描述 这是 LeetCode 上的 「875. 爱吃香蕉的珂珂」 ,难度为 「中等」。 Tag : 「二分」 珂珂喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 h 小时后回来。 珂珂可以决定她吃香蕉的速度 k (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 k 根。如果这堆香蕉少于 k 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 h 小

宫水三叶的刷题日记 498

第一章 千牛实时获取消息之ws服务端搭建

以上就是今天要讲的内容,本文仅仅简单介绍了ws服务端的搭建,后面将介绍ws客户端的搭建和配合ws服务器的测试。

不想说话的树专栏 1828

Leetcode875—爱吃香蕉的珂珂题目详解

题目描述 珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)

无名之辈,我是谁 1968

康耐视visionpro-CogBlobTool工具详细说明

康耐视visionpro-CogBlobTool工具详细说明

视觉人机器视觉的博客 1726

(八)DDR_PHY架构及功能——(PUB组成、初始化及Training流程、Clock关系)

文章目录一、DDR_PHY结构组成1.1、DDR Memory子系统1.2、DDR_PHY架构组成1.3、PUB模块功能实现流程1.3.1、DDR系统初始化流程1.3.2、PLL初始化流程 一、DDR_PHY结构组成 1.1、DDR Memory子系统   Memory子系统主要由DDR Controller和DDR_PHY(含DDR_IO)两个部分组成。DDR Controller主要承担其它子系统(如CPU)与Memory子系统进行数据交互时的传输效率及调度,DDR_PHY主要负责数据交互过程中的传输速

Mr.翟的博客 1万+

LeetCode、875. 爱吃香蕉的珂珂【中等,最小速度二分】

LeetCode、875. 爱吃香蕉的珂珂【中等,最小速度二分】 题目: 珂珂喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 h 小时后回来。 珂珂可以决定她吃香蕉的速度 k (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 k 根。如果这堆香蕉少于 k 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 h 小时内吃掉所有香蕉的最小速度 k(k 为整数)。

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 757

uniapp [安卓苹果App端] - 实现获取手机日历读写权限+调用本机日历数据及操作功能+日历中插入事项事件提醒,检测权限手机日历权限是否开启并引导用户同意授权,uniApp app端开启日历授权

uni-app,权限,手机日历权限,安卓Android,苹果ios,uniapp安卓android获取本机日历读写权限使用,uni-app获取日历权限并实现插入事项事件功能 uniapp苹果IOS系统不支持怎么办,判断权限,权限被拒绝了怎么办,获取日历权限报错,读取日历数据农历阴历并操作插入移除,给用户手机日历中放入一条提示,UniApp调用日历进行读写,打包上架后如何获取,安卓ios权限检测,安卓和ios权限获取,uniapp的APP端日历读写权限与使用示例代码,如何开启日历权限,日历的新增事项和删除,判

🏆 前端领域优质创作者 1万+

Leetcode 875 爱吃香蕉的珂珂 (C++题解)

珂珂喜欢吃香蕉。这里有N堆香蕉,第 i 堆中有piles[i]根香蕉。警卫已经离开了,将在H小时后回来。 珂珂可以决定她吃香蕉的速度K(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 H 小时内吃掉所有...

jhhh512722654的博客 3272

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

LeetCode 875爱吃香蕉的珂珂

珂珂喜欢吃香蕉。这里有n堆香蕉,第i堆中有piles[i]根香蕉。警卫已经离开了,将在h小时后回来。珂珂可以决定她吃香蕉的速度k(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉k根。如果这堆香蕉少于k根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在h小时内吃掉所有香蕉的最小速度kk为整数)。

Cw_Herry的博客 578

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[HOT 100] 0875. 爱吃香蕉的珂珂

对于给定的k,计算吃完所有堆所需的总时间。总时间是每个堆的时间之和,每个堆的时间为ceil(pile/k),可以通过(pile - 1) // k + 1计算。:Koko需要在h小时内吃完所有香蕉堆,每个堆的香蕉数量不同。她可以决定每小时吃k根香蕉,但每小时只能吃完一个堆。目标是找到最小的k。:最小的可能k是1(每小时吃1根),最大的k是最大堆的香蕉数(此时每个堆在1小时内吃完)。:O(n log m),其中n是堆的数量,m是最大堆的香蕉数。根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。

人生需要动态规划 学习需要贪心算法 460

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LeetCode 875. 爱吃香蕉的珂珂(二分查找)

1. 题目 珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。 如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。 示例 1: 输入: piles = [3,6,7,11], H = 8

Michael是个半路程序员 8005

LeetCode 875. 爱吃香蕉的珂珂

最近刷LeetCode题目的一些思路,题目信息 珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。   珂珂喜欢慢慢吃,但仍然想在警卫回来前吃...

SundyGuo的博客 4402

Python描述 LeetCode 875. 爱吃香蕉的珂珂

珂珂喜欢吃香蕉。这里有 堆香蕉,第 堆中有 根香蕉。警卫已经离开了,将在 小时后回来。珂珂可以决定她吃香蕉的速度 (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 根。如果这堆香蕉少于 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 小时内吃掉所有香蕉的最小速度 ( 为整数)。示例 1: 示例 2: 示例 3: 提示:整数二分,查找左边界...

一起加油 1180

leetcode 875. 爱吃香蕉的珂珂

时间复杂度:空间复杂度:410. 分割数组的最大值 - 力扣(LeetCode) LCP 12. 小张刷题计划 - 力扣(LeetCode) 1482. 制作 m 束花所需的最少天数 - 力扣(LeetCode) 875. 爱吃香蕉的珂珂 - 力扣(LeetCode) 1011. 在 D 天内送达包裹的能力 - 力扣(LeetCode) image.png

邹九的个人博客 445

【C语言刷LeetCode】875. 爱吃香蕉的珂珂(M)

【 珂珂喜欢吃香蕉。这里有N堆香蕉,第 i 堆中有piles[i]根香蕉。警卫已经离开了,将在H小时后回来。 珂珂可以决定她吃香蕉的速度K(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 H 小时内吃...

kinbo88的专栏 1164

LeetCode刷题——875. 爱吃香蕉的珂珂

LeetCode刷题——875. 爱吃香蕉的珂珂

Maqiuqiu520的博客 272

Day69 | 灵神 | 二分查找:爱吃香蕉的珂珂

注意,题目说piles的大小小于时间h,这使得我们很容易找到k的最大值,那就是数组的最大值,我每个小时吃这么多肯定可以吃得完,而最小值肯定不能是0,因为怎么都不可能吃完,所以从1开始。2.满足条件更新r还是l,那就看sum是大于还是小于h了,本题是sum小于等于h,找的是左边界,只要mid满足条件,那么大于mid的肯定都满足条件,所以更新r。有了昨天的H指数II,这道题只能说是 so easy,还是一样,piles只是用来写判断条件的,我们二分的是速度k。这个区间肯定都符合条件。然后继续往左收缩就是了。

m0_74795952的博客 529

LeetCode 分类刷题:875. 爱吃香蕉的珂珂

珂珂需要在h小时内吃完n堆香蕉,求最小进食速度k。通过二分法在[sum/h, max(piles)]区间内搜索最优解:计算中间速度mid,遍历数组求总耗时t,若t大于h则提速,否则减速。最终返回满足条件的最小k值。该算法时间复杂度O(nlogU),空间复杂度O(1)。

flashlight_hi的博客 465

Leetcode 875 爱吃香蕉的珂珂

珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 H 小时内吃掉所有...

qq_39904393的博客 589

C刷题:LeetCode 875. 爱吃香蕉的珂珂 (中等)

本题的每堆香蕉数可排序,也可以不排序。虽然本题自己写一个查找最大值的函数仅需一个for循环,时间复杂度O(N),比快排的时间复杂度为O(NlogN)消耗要小。但还是建议先排序,排序的好处是直接能找出最值,不用自己写函数,另一个也可以简化思路。下面分析中默认已按升序排序。

来知晓的博客 602
上一篇: leecode1658 将x减小到0的最小操作数
下一篇: leecode2439 最小化数组中的最大值
TranquilGlow
博客等级 码龄5年 132粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值