题目链接
思路
- 这个也是范围内的查找,一开始可以确定狒狒的速度区间应该是[1,maxVal],但是有两个细节需要注意
import java.util.Arrays;
class Solution {
public int minEatingSpeed(int[] piles, int h) {
int left = 1, right = Arrays.stream(piles).max().getAsInt(), result = 0;
while (left <= right) {
int mid = left + ((right - left) >> 1), hour = getEatTime(piles, mid);
if (hour > h) {
left = mid + 1;
} else {
result = mid;
right = mid - 1;
}
}
return result;
}
private int getEatTime ( int[] piles, int speed){
int result = 0;
for (int pile : piles) {
result += (pile + speed - 1) / speed;
}
return result;
}
}