1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class Solution { public int minEatingSpeed(int[] piles, int h) { int left = 1, right = 1000000000; while (left < right) { int mid = (left + right) >>> 1; if (canEat(mid, piles, h)) { right = mid; } else { left = mid + 1; } }
return left; }
private boolean canEat(int speed, int[] piles, int h) { int hour = 0; for (int pile : piles) { hour += pile / speed + (pile % speed != 0 ? 1 : 0); if (hour > h) { return false; } }
return true; } }
|
References
875. Koko Eating Bananas
剑指 Offer II 073. 狒狒吃香蕉