875. 爱吃香蕉的珂珂

image.png

代码

  1. class Solution {
  2. public int minEatingSpeed(int[] piles, int h) {
  3. //二分
  4. int left = 1, right = (int) Math.pow(10,9) ;
  5. int speed = Integer.MAX_VALUE;
  6. while(left <= right ) {
  7. int mid = left + ( (right - left) >> 1 );
  8. int hour = getHour(piles, mid);
  9. if(hour <= h ) {
  10. speed = Math.min(speed, mid);
  11. right = mid - 1;
  12. } else {
  13. left = mid + 1;
  14. }
  15. }
  16. return speed;
  17. }
  18. private int getHour(int[] piles, int speed ) {
  19. int hour = 0;
  20. for(int pile : piles ) {
  21. if(pile % speed == 0 ) {
  22. hour += pile / speed;
  23. } else {
  24. hour += pile / speed + 1;
  25. }
  26. }
  27. return hour;
  28. }
  29. }