题目
返回她可以在 h 小时内吃掉所有香蕉的最小速度 k(k 为整数)。
思路
运用二分查找,当小于等于target时,将r=mid继续查找有没有更小的元素,大于target时,将l = mid+1找解
代码
import java.util.Arrays;
class Solution {
public int minEatingSpeed(int[] piles, int h) {
//<=h的最小值
int l = 1,r = Arrays.stream(piles).max().getAsInt();
while (l < r){
int mid = l + (r - l )/2;
if(time(piles,mid) <= h){
r = mid;
}else {
l = mid + 1;
}
}
return l;
}
public int time(int[] piles , int v){
int sum = 0;
for (int i = 0; i < piles.length; i++) {
if (piles[i]%v == 0) {
sum += piles[i]/v;
}else sum += piles[i]/v +1;
}
return sum;
}
}