LeetCode 875: Koko Eating Bananas — Step-by-Step Visual Trace


Medium — Binary Search | Array | Math

The Problem

Find the minimum eating speed (bananas per hour) such that Koko can eat all banana piles within h hours, where she can only eat from one pile per hour.

Approach

Use binary search on the eating speed range from 1 to max(piles). For each candidate speed, calculate total hours needed using ceiling division, then adjust search bounds based on whether it exceeds the time limit.

Time: O(n log m) · Space: O(1)

Code

class Solution:
    def minEatingSpeed(self, piles: List[int], h: int) -> int:
        left, right = 1, max(piles)

        while left < right:
            mid = left + (right - left) // 2
            hours = sum((pile + mid - 1) // mid for pile in piles)

            if hours > h:
                left = mid + 1
            else:
                right = mid

        return left

Watch It Run

Try it yourself: Open TraceLit and step through every line.


Built with TraceLit — the visual algorithm tracer for LeetCode practice.


Comments