Koko Eating Bananas - Problem
Koko loves to eat bananas. There are n piles of bananas, the i-th 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.
Input & Output
Example 1 — Basic Case
$
Input:
piles = [3,6,7,11], h = 8
›
Output:
4
💡 Note:
At speed k=4: pile 3 takes ceil(3/4)=1 hour, pile 6 takes ceil(6/4)=2 hours, pile 7 takes ceil(7/4)=2 hours, pile 11 takes ceil(11/4)=3 hours. Total: 1+2+2+3=8 hours, which equals h=8.
Example 2 — Tight Constraint
$
Input:
piles = [30,11,23,4,20], h = 5
›
Output:
30
💡 Note:
With 5 piles and 5 hours, Koko must finish at least one pile per hour. The largest pile is 30, so minimum speed is 30 bananas/hour.
Example 3 — Plenty of Time
$
Input:
piles = [30,11,23,4,20], h = 6
›
Output:
23
💡 Note:
At speed k=23: takes ceil(30/23)+ceil(11/23)+ceil(23/23)+ceil(4/23)+ceil(20/23) = 2+1+1+1+1 = 6 hours exactly.
Constraints
- 1 ≤ piles.length ≤ 104
- piles.length ≤ h ≤ 109
- 1 ≤ piles[i] ≤ 109
Visualization
Tap to expand
Understanding the Visualization
1
Input
Banana piles and time limit h
2
Process
Find minimum eating speed k
3
Output
Minimum k to finish within h hours
Key Takeaway
🎯 Key Insight: Binary search on eating speed leverages the monotonic property - if speed k works, all speeds > k also work
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code