875. 爱吃香蕉的珂珂

  1. 875. 爱吃香蕉的珂珂
  • 题解
  • 875. 爱吃香蕉的珂珂

    难度中等108

    珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。

    珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。

    珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。

    返回她可以在 H 小时内吃掉所有香蕉的最小速度 KK 为整数)。

    示例 1:

    输入: piles = [3,6,7,11], H = 8
    输出: 4

    示例 2:

    输入: piles = [30,11,23,4,20], H = 5
    输出: 30

    示例 3:

    输入: piles = [30,11,23,4,20], H = 6
    输出: 23

    提示:

    • 1 <= piles.length <= 10^4
    • piles.length <= H <= 10^9
    • 1 <= piles[i] <= 10^9

    通过次数19,912

    提交次数44,312

    题解

    class Solution {
        public int minEatingSpeed(int[] piles, int H) {
            int l = 1;
            int r = 1;
            for(int i : piles){
                r = Math.max(r,i);
            }
            while(l < r){
                int mid = l + (r-l)/2;
                if(check(piles, H, mid)){
                    r = mid;
                }else{
                    l = mid+1;
                }
            }
            return l;
        }
    
        private boolean check(int[] piles, int H , int mid){
            int sum = 0;
            for(int i : piles){
                if( i <= mid){
                    sum++;
                }else{
                    sum+=(i/mid)+1;
                }
            }
            return sum <= H;
        }
    }

    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 mym_74@163.com