欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[二分法]leetcode875:爱吃香蕉的珂珂(medium)

程序员文章站 2024-03-16 09:05:40
...

题目:

875. 爱吃香蕉的珂珂

题解:

代码如下:

class Solution {
public:
    //题解:二分查找
    //二分查找结束的条件为区间内还剩下两个数,其中右边那个数为我们所要寻找的数
    int minEatingSpeed(vector<int>& piles, int H) {
        int left=0,right=1000000001;
        while(left+1<right)
        {
            int mid=left+((right-left)>>1);
            long long sum=0;
            for(int p:piles){//解释:若num小于等于mid,num-1/mid为0,然后向上取整再加1;若num大于mid,num-1/mid为整除结果,然后向上取整再加1
                sum+=(p+mid-1)/mid;//向上取整
            }
            if(sum>H)left=mid;//sum值太大,区间右移
            else right=mid;//sum值小,区间左移,注意最终结果就出现在右边界上
        }
        return right;
    }
};