// 猴子吃香蕉 求规定时间内的最慢速度
// 输入: piles = [30,11,23,4,20], H = 6
// 输出: 23
var minEatingSpeed = function (piles, h) {
let left = 1 // 最慢速度
let right = Math.max(...piles) // 最快速度
let canEat = (speed) => {
let sumTime = piles.reduce((acc, curr) => {
acc += Math.ceil(curr/speed)
return acc
}, 0)
return sumTime <= h
}
while(left < right){
let mid = Math.floor((left + right)/2)
if(canEat(mid)){
right = mid
} else {
left = mid + 1
}
}
return left
}
console.log(minEatingSpeed([30,11,23,4,20], 6))