classSolution{private:boolcheck(vector<int>& nums,int h,int v){int cur =0;for(int num : nums)
cur += num/v +(num%v ==0?0:1);// 需要向上取整,还可以用 cur += (num-1)/v+1;return cur > h;}public:intminEatingSpeed(vector<int>& piles,int h){int l =1, r =*max_element(piles.begin(), piles.end());while(l < r){int mid = l +(r - l)/2;if(check(piles, h, mid))// 耗时大于h,则需要向右区间移动
l = mid+1;else r = mid;}return l;}};