DSA Patterns (Multi-Lang)•Part 6: Binary Search & Search on Answer (46 - 52)
Koko Eating Bananas.
In Simple Words:
Binary Search on Answer range [1, max(piles)]. For eating rate k, calculate hours required: Math.ceil(p / k). If hours <= h, try slower rate r = k; else l = k + 1.
- Time: $O(N \log(\max(P)))$ | Space: $O(1)$
Multi-Language SolutionsPython 3 • JavaScript • TypeScript • Java • C++
Switch tabs or choose Allimport math
def minEatingSpeed(piles: list[int], h: int) -> int:
l, r = 1, max(piles)
while l < r:
k = l + (r - l) // 2
total_hours = sum(math.ceil(p / k) for p in piles)
if total_hours <= h:
r = k
else:
l = k + 1
return l