美文网首页
2022-06-07 「875. 爱吃香蕉的珂珂」

2022-06-07 「875. 爱吃香蕉的珂珂」

作者: 柠香萌萌鸡 | 来源:发表于2022-06-07 10:11 被阅读0次

今日中等题:https://leetcode.cn/problems/koko-eating-bananas/

刚开始看题目的时候觉得很简单,因为题目给的几个样例中,h和piles的长度相等时,就是最简单的,速度等于最大堆香蕉根数就是答案。
仔细思考之后发现,其他情况没办法穷举,无奈看了题解,发现是使用二分法,夹逼出答案。

这里需要注意一个点,就是向上取整时,如果本身能整除时不需要+1。

贴代码吧,这题也没有什么其他花样,就看能否想到二分法了。

class Solution {
    public int minEatingSpeed(int[] piles, int h) {
        Arrays.sort(piles);
        int len = piles.length;
        
        // 最大速度是最大根数,最小速度是1,取中间值
        int min = 1, max = piles[len - 1];

        while (min < max) {
            int mid = (min + max) / 2;
            if (time(piles, mid) > h) {
                min = mid + 1;
            }
            else {max = mid;}
        }
        return min;
    }

    // 向上取整算时间
    public int time(int[] piles, int speed) {
        int sum = 0;
        for (int pile : piles) {
            sum += (pile + speed - 1) / speed;
        }
        return sum;
    }
}

相关文章

网友评论

      本文标题:2022-06-07 「875. 爱吃香蕉的珂珂」

      本文链接:https://www.haomeiwen.com/subject/retemrtx.html