題目:
狒狒喜歡吃香蕉,這里有 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
注意:本題與主站 875 題相同: https://leetcode-cn.com/problems/koko-eating-bananas/
答案:
class Solution {
public int minEatingSpeed(int[] piles, int h) {
//使用二分一個個試過去速度
int left = 1, right = 1000000000;
while(left < right){
int mid = left + (right - left) / 2;
if(possible(piles, h, mid)){
right = mid;
}else left = mid + 1;
}
return left;
}
public boolean possible(int[] piles, int h, int k){
int time = 0;
for(int p : piles){
time += ((p - 1) / k) + 1;
}
return time <= h;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/353288.html
標籤:其他
上一篇:同一頭檔案中的未知型別名稱
