875. 爱吃香蕉的珂珂 - 力扣(LeetCode)
珂珂喜欢吃香蕉。这里有
n
堆香蕉,第i
堆中有piles[i]
根香蕉。警卫已经离开了,将在h
小时后回来。珂珂可以决定她吃香蕉的速度
k
(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉k
根。如果这堆香蕉少于k
根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。
返回她可以在
h
小时内吃掉所有香蕉的最小速度k
(k
为整数)。示例 1:
输入:piles = [3,6,7,11], h = 8 输出:4
示例 2:
输入:piles = [30,11,23,4,20], h = 5 输出:30
示例 3:
输入:piles = [30,11,23,4,20], h = 6 输出:23
提示:
1 <= piles.length <= 10(4)
piles.length <= h <= 10(9)
1 <= piles[i] <= 10(9)
class Solution {
public:
using ll = long long; // 定义长整型别名
vector<int> piles; // 存储香蕉堆的数组
int h; // 总时间 h 小时
int n; // 香蕉堆的数量
ll ret = INT_MAX; // 存储结果,即最小速度 k
ll maxp; // 存储最大的香蕉堆数量
// 计算在给定速度下吃完所有香蕉所需的总时间
ll f(ll speed) {
ll count = 0; // 总时间
for (int i = 0; i < n; i++) {
// 计算吃完当前堆香蕉所需的时间
count += piles[i] % speed == 0 ? piles[i] / speed : piles[i] / speed + 1;
}
return