文章目录
原题题目

代码实现(首刷自解)
class Solution {
public:
bool can_eat(vector<int>& piles,int eat_speed,int h)
{
int finish_h = 0;
for(const auto& num:piles)
{
bool remain = num % eat_speed;
finish_h += ((num / eat_speed) + ((remain) ? 1 : 0));
if(finish_h > h) return false;
}
return true;
}
int minEatingSpeed(vector<int>& piles, int h) {
int left = 1,right = 0;
for(const auto& num:piles)
right = max(right,num);
while(left < right)
{
int mid = (left + right)/2;
if(!can_eat(piles,mid,h)) left = mid+1;
else right = mid;
}
return left;
}
};
还没有评论,来说两句吧...