LeetCode: 875. Koko Eating Bananas

LeetCode: 875. Koko Eating Bananas

题目描述

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

解题思路

K 可能的最小值实际橡胶总数除以最大小时数。 从该值开始,枚举 K 可能的结果,直到满足要求的结果出现为止。

AC 代码

class Solution {
public:
    int minEatingSpeed(vector<int>& piles, int H) {
        long long int bananas = 0;
        for(int bnum : piles)
        {
            bananas += bnum;
        }

        int kexp = (bananas+H-1)/H;

        while(true)
        {
            int t = 0;
            for(int i = 0; i < piles.size(); ++i)
            {
                t += (piles[i]/kexp + (piles[i]%kexp != 0));
            }
            if(t <= H) 
            {
                return kexp;
            }
            ++kexp;

            if(kexp >= bananas)
            {
                return -1;
            }
        }
    }
};
全部评论

相关推荐

绝迹的星:前端和后端写两份简历, 如果想干全栈就直接写求职意向为全栈工程师
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
07-17 11:27
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务