-
Notifications
You must be signed in to change notification settings - Fork 0
/
[47-w10-d2]minEatingSpeed.js
30 lines (28 loc) · 1.08 KB
/
[47-w10-d2]minEatingSpeed.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//Koko loves to eat bananas. There are n piles of bananas,
//the ith pile has piles[i] bananas. The guards have gone and will come back in h hours.
//Koko can decide her bananas-per-hour eating speed of k. Each hour, she chooses some pile
//of bananas and eats k bananas from that pile. If the pile has less than k bananas,
//she eats all of them instead and will not eat any more bananas during this hour.
//Koko likes to eat slowly but still wants to finish eating all the bananas before the guards return.
//Return the minimum integer k such that she can eat all the bananas within h hours.
function minEatingSpeed(piles, h) {
let l = 1;
let r = Math.max(...piles);
let result = r;
while (l <= r) {
let mid = Math.floor((l + r) / 2);
let hoursNeeded = 0
for (let i = 0; i < piles.length; i++) {
hoursNeeded += Math.ceil(piles[i] / mid);
}
if (hoursNeeded <= h) {
result = Math.min(result, mid)
r = mid - 1;
} else {
l = mid + 1;
}
}
return result;
}
minEatingSpeed([3, 6, 7, 11], 8); //4
minEatingSpeed([30,11,23,4,20], 5); //30