Note:
答案的范围,一定是在1
和 max(piles[i])
之间的,那么二分去找答案,二分的判断条件就是以当前这个速度,h小时之内能不能吃完香蕉
代码如下:
class Solution {
public:
bool check(vector<int>& piles, int mid, int h){
int ans = 0;
for(int i = 0; i < piles.size(); i ++)
if(piles[i] % mid != 0) ans += piles[i] / mid + 1;
else ans += piles[i] / mid;
if(ans <= h) return true;
else return false;
}
int minEatingSpeed(vector<int>& piles, int h) {
int l = 1, r = 1e9;
while(l < r){
int mid = l + r >> 1;
if(check(piles, mid, h)) r = mid;
else l = mid + 1;
}
return r;
}
};