首页 > 其他 > 详细

875. Koko Eating Bananas

时间:2018-11-10 18:24:12      阅读:186      评论:0      收藏:0      [点我收藏+]

Koko loves to eat bananas.  There are N piles of bananas, the i-th pile has piles[i] bananas.  The guards have gone and will come back in H hours.

Koko can decide her bananas-per-hour eating speed of K.  Each hour, she chooses some pile of bananas, and eats K bananas from that pile.  If the pile has less than K bananas, she eats all of them instead, and won‘t eat any more bananas during this hour.

Koko likes to eat slowly, but still wants to finish eating all the bananas before the guards come back.

Return the minimum integer K such that she can eat all the bananas within H hours.

 

Example 1:

Input: piles = [3,6,7,11], H = 8
Output: 4

Example 2:

Input: piles = [30,11,23,4,20], H = 5
Output: 30

Example 3:

Input: piles = [30,11,23,4,20], H = 6
Output: 23

 

Note:

  • 1 <= piles.length <= 10^4
  • piles.length <= H <= 10^9
  • 1 <= piles[i] <= 10^9

 

Approach #1:

class Solution {
public:
    int minEatingSpeed(vector<int>& piles, int H) {
        int len = piles.size();
       if (len == 1) return 1;
        long long l = 0, r = pow(10, 9);
        while (l < r) {         // not l <= r
            long long mid = l + (r - l) / 2;
            int time = 0;
            for (int i = 0; i < len; ++i) 
                time += (piles[i] - 1) / mid + 1; // better than time += (piles[i] % mid) == 0 ? piles[i] / mid : piles[i] / mid + 1;
            if (time > H) l = mid + 1;
            else r = mid;       // mot r = mid - 1
        }
        return l;
    }
};
Runtime: 68 ms, faster than 38.03% of C++ online submissions for Koko Eating Bananas.

 

Analysis:

Pay attention to the boundary condition.

 

875. Koko Eating Bananas

原文:https://www.cnblogs.com/ruruozhenhao/p/9940100.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!