classSolution{ publicintminEatingSpeed(int[] piles, int h){ int r = Integer.MIN_VALUE; for (int pile : piles) { r = Math.max(r, pile); } int l = 1; while (l < r) { int mid = l + r >> 1; if (check(mid, piles, h)) { r = mid; } else { l = mid + 1; } } return r; }
privatebooleancheck(int mid, int[] piles, int h){ int tot = 0; for (int pile : piles) { tot += Math.ceil(pile * 1.0 / mid); } return tot <= h; } }