具体思想:
哎,自己是真傻逼,没看到二段性;
这么典型的二分没看出来,真傻逼啊。
具体代码:
class Solution {
public:
int minEatingSpeed(vector<int>& piles, int h) {
int l=1;
int r=0;
for(auto& ele:piles){
r=max(r,ele);
}
while(l<r){
int mid=l+(r-l)/2;
if(gettimes(piles, mid)>h){
l=mid+1;
}else{
r=mid;
}
}
return l;
}
int gettimes(vector<int>& piles,int speed){
int ret=0;
for(int i=0;i<piles.size();i++){
ret+=piles[i]/speed;
if(piles[i]%speed!=0)
ret++;
}
return ret;
}
};