875. Koko Eating Bananas
Medium
Input: piles = [3,6,7,11], h = 8
Output: 4Input: piles = [30,11,23,4,20], h = 5
Output: 30Input: piles = [30,11,23,4,20], h = 6
Output: 23Last updated
Input: piles = [3,6,7,11], h = 8
Output: 4Input: piles = [30,11,23,4,20], h = 5
Output: 30Input: piles = [30,11,23,4,20], h = 6
Output: 23Last updated
class Solution:
def minEatingSpeed(self, piles: List[int], h: int) -> int:
maximum = -float("inf")
result = 0
for pile in piles:
maximum = max(pile, maximum)
left, right = 1, maximum
while left <= right:
mid = left + (right-left) // 2
steps = self.checkIfValid(mid, piles, h)
if steps != -1:
result = steps
right = mid -1
else:
left = mid + 1
return result
def checkIfValid(self, k, piles, h):
total = 0
for pile in piles:
total += math.ceil(pile/k)
return k if total <= h else -1