中文描述:

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

题目描述:

Koko loves to eat bananas. There are n piles of bananas, the ith pile has piles[i] bananas. The guards have gone and will come back in h hours.
Koko can decide her bananas-per-hour eating speed of k. Each hour, she chooses some pile of bananas and eats k bananas from that pile. If the pile has less than k bananas, she eats all of them instead and will not eat any more bananas during this hour.
Koko likes to eat slowly but still wants to finish eating all the bananas before the guards return.
Return the minimum integer k such that she can eat all the bananas within h hour。

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:

1 <= piles.length <= 104
piles.length <= h <= 109
1 <= piles[i] <= 109

Time complexity: OOO(NNNlog(W)), where N is the number of piles, and W is the maximum size of a pile.
Space complexity: OOO(111)
二分 二分搜索总结:
根据上面的二分搜索总结,注意此题为 找最小速度 K 使得她可以在 H 小时内吃掉所有香蕉
则此题可以归纳为二分找左边界(最优区间的左边) 套用基础模版:
初始化左边界 lo:1。
初始化右边界 hi:constraints 中最大的数据范围 109
循环条件: lo < hi
中间位置 mid = lo + (hi-lo>>1),
更新左边界 lo = mid+1,
更新右边界 hi = mid,
左右边界的判断条件:
注意更新左右边界的判断条件当我们给定一个值 x,我们可以线性地验证是否存在一种方案,当她的速度为 x时 她仍然能在 H小时内吃完。

贪心地模拟分割的过程,从前到后遍历数组,用 time 表示当前所用的时间总和,每次我们求出当前这一堆 p 吃完所用的是间 即:t = Math.ceil(p / x) 向上取整 = (p-1) / x + 1,并将time 加 上 t。遍历结束后验证是否 time 不超过 H。

满足此条件的话则我们在 [lo, x(mid)] 的 范围内继续寻找是否存在更小的 x 值满足此条件 即 hi = mid。反之则表示给定的 速度x值过小 lo = mid + 1.

class Solution {public int minEatingSpeed(int[] piles, int h) {int lo = 1;int hi = 1_000_000_000;int mid;while(lo < hi){mid = lo + (hi-lo>>1);if(check(piles, h, mid)){// speed mid eat with in h hourshi = mid;}else{lo = mid+1;}}return lo;}private boolean check(int[] piles, int h, int x){int time = 0;for(int p:piles){time += (p-1) / x + 1;}return time <= h;}
}

Leetcode 875:爱吃香蕉的珂珂 Koko Eating Bananas相关推荐

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

    Python描述 LeetCode 875. 爱吃香蕉的珂珂   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术博文,主要包括前端开 ...

  2. Leetcode 875.爱吃香蕉的珂珂(Koko Eating Bananas)

    Leetcode 875.爱吃香蕉的珂珂 1 题目描述(Leetcode题目链接)   珂珂喜欢吃香蕉.这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉.警卫已经离开了,将在 H 小时后回 ...

  3. leetcode 875.爱吃香蕉的珂珂(koko eating bananas)C语言

    leetcode 875.爱吃香蕉的珂珂(koko eating bananas)C语言 1.description 2.solution 1.description https://leetcode ...

  4. leetcode 875. 爱吃香蕉的珂珂

    875. 爱吃香蕉的珂珂 class Solution {public:int minEatingSpeed(vector<int>& piles, int H) {long le ...

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

    1. 题目 珂珂喜欢吃香蕉.这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉.警卫已经离开了,将在 H 小时后回来. 珂珂可以决定她吃香蕉的速度 K (单位:根/小时).每个小时,她将会选 ...

  6. leetcode 875. 爱吃香蕉的珂珂 koko eating bananas

    一.题目描述 珂珂喜欢吃香蕉.这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉.警卫已经离开了,将在 h 小时后回来. 珂珂可以决定她吃香蕉的速度 k (单位:根/小时).每个小时,她将会 ...

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

    珂珂喜欢吃香蕉.这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉.警卫已经离开了,将在 H 小时后回来. 珂珂可以决定她吃香蕉的速度 K (单位:根/小时).每个小时,她将会选择一堆香蕉, ...

  8. LeetCode 875.爱吃香蕉的珂珂

    1. 题目 原题链接 https://leetcode-cn.com/problems/koko-eating-bananas/ 题目描述 珂珂喜欢吃香蕉.这里有 N 堆香蕉,第 i 堆中有 pile ...

  9. Leetcode 875. 爱吃香蕉的珂珂

    珂珂喜欢吃香蕉.这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉.警卫已经离开了,将在 H 小时后回来. 珂珂可以决定她吃香蕉的速度 K (单位:根/小时).每个小时,她将会选择一堆香蕉, ...

  10. 妮妮喜欢吃桃子 java_Leetcode之二分法专题-875. 爱吃香蕉的珂珂(Koko Eating Bananas)...

    Leetcode之二分法专题-875. 爱吃香蕉的珂珂(Koko Eating Bananas) 珂珂喜欢吃香蕉.这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉.警卫已经离开了,将在 H ...

最新文章

  1. 测试django_如何像专业人士一样测试Django Signals
  2. 100c之50:到底谁在说谎
  3. Step By Step_Java通过JNI调C程序执行
  4. 计算机图形与游戏技术,宾夕法尼亚大学计算机图形与游戏技术研究生Offer及录取要求...
  5. 输入某年某月某日,判断这一天是这一年的第几天?(使用python语言)
  6. filepath直接指定到文件名吗_PyTest运行指定的测试集
  7. git rollback代码都没了_git回滚线上代码
  8. 学工在线新闻搜索引擎0.1 beta版
  9. 解决WP后台无法安装插件
  10. 2021-01-16
  11. 正点原子i.mx6ullMini开发板用SPI驱动RC522门禁卡模块
  12. Android基础学习(十五)—— 序列化与反序列化(包括 JSON、GSON))
  13. 谷歌展示如何通过冗余实现量子纠错; QuantWare推出商用超导量子处理器 | 全球量子科技与工业快讯第二十九期
  14. 疫情重压下,屈臣氏为何上半年仍盈利?
  15. 电路设计_自恢复保险丝参数说明
  16. 物理机ping通Centos虚拟机,但虚拟机ping不通物理机的解决方法
  17. cf修改游戏客户端是什么意思_cf封号原因是非法篡改游戏客户端是什么意思
  18. 什么是VOIP-网络电话名词详解
  19. 中等专业学校计算机教师,中等专业学校计算机班主任老师年度工作总结
  20. Linux上面开发android手机驱动加载.

热门文章

  1. 哈工大软件构造笔记1
  2. 血与荣耀(第二章-不解之谜)
  3. 国内cdn免费加速出现了,您知道吗?
  4. 玩转iOS开发:集成 Union Pay - 银联支付
  5. Python从入门到精通--课程目录
  6. VMWare的安装和虚拟机的新建
  7. 基于KEIL 的合并boot.binapp.bin的脚本文件
  8. 豆酱踩坑(一)—— python 图片保存与显示
  9. 5分钟教你做一个WebView广告过滤器
  10. 产品经理(012)-竞品调研