Koko Eating Bananas

Medium~25 min

Koko loves to eat bananas. There are n piles of bananas, the ith pile has piles[i] bananas. The guards will come back in h hours.

Koko can decide her bananas-per-hour eating speed of k. Each hour, she chooses a pile and eats k bananas from it. If the pile has fewer than k bananas, she eats all of them and won't eat any more bananas during that hour.

Return the minimum integer k such that Koko can eat all the bananas within h hours.

Examples

Example 1
Input: piles = [3, 6, 7, 11], h = 8
Output: 4
Explanation: At speed 4: ceil(3/4) + ceil(6/4) + ceil(7/4) + ceil(11/4) = 1 + 2 + 2 + 3 = 8 hours. Speed 3 would take 10 hours, which exceeds h.
Example 2
Input: piles = [30, 11, 23, 4, 20], h = 5
Output: 30
Explanation: With 5 piles and only 5 hours, Koko must eat each pile in 1 hour. The largest pile is 30, so k = 30.
Example 3
Input: piles = [30, 11, 23, 4, 20], h = 6
Output: 23
Explanation: At speed 23: ceil(30/23) + ceil(11/23) + ceil(23/23) + ceil(4/23) + ceil(20/23) = 2 + 1 + 1 + 1 + 1 = 6 hours.

Constraints

  • 1 <= piles.length <= 10^4
  • piles.length <= h <= 10^9
  • 1 <= piles[i] <= 10^9
  • Expected time complexity: O(n log n)
Code
Ctrl+EnterRun|Ctrl+⇧+EnterSubmit
Output

Run your code to see results

Use Cmd+Enter to run