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
Koko Eating Bananas: Find Minimum Speed3🍌6🍌7🍌11🍌Banana Piles: [3, 6, 7, 11]Time Limit: h = 8 hoursAt speed k=4 bananas/hour:Pile 1: ceil(3/4) = 1 hourPile 2: ceil(6/4) = 2 hoursPile 3: ceil(7/4) = 2 hoursPile 4: ceil(11/4) = 3 hoursTotal: 1+2+2+3 = 8 hours ✓Minimum Speed: k = 4
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
Asked in
Facebook 25 Amazon 18 Google 15 Microsoft 12
157.0K Views
Medium Frequency
~25 min Avg. Time
3.4K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen