wordpress外贸站gdpr,作品设计方案怎么写,郑州做网站推广的公司,亚马逊aws永久免费服务69一、题目 二、思路
速度 k#xff08;单位#xff1a;根/小时#xff09;是存在一个取值范围的。 速度越大肯定在规定的时间之内一定会吃完全部的香蕉#xff0c;但也是可以确定出一个上界的。由于只要保证一小时之内#xff0c;可以吃完香蕉数目最多的那一堆的香蕉…一、题目 二、思路
速度 k单位根/小时是存在一个取值范围的。 速度越大肯定在规定的时间之内一定会吃完全部的香蕉但也是可以确定出一个上界的。由于只要保证一小时之内可以吃完香蕉数目最多的那一堆的香蕉那么其他数目更小的香蕉在1小时之内肯定都是可以吃完的那么 k 的最大值就是数组的最大值。k 肯定不为 0又是整数确定其最小值为 1.k ∈ [1, max_pile] 采用二分查找进行寻找 k 的最小值。
三、代码
class Solution {public int minEatingSpeed(int[] piles, int h) {int n piles.length;// 确定 k 的搜索范围int l 1, r 0;for (int pile : piles) {// 找到香蕉数量最多的为 k 的最大值r Math.max(r, pile);}// 范围内进行二分查找while (l r) {int mid l (r - l)/2;if (check(piles, h, mid)) {// 检查当前速度 k 是否能够在规定时间 h 内将全部香蕉吃完r mid - 1;// 能吃完说明当前 k 较大收缩右边界} else {l mid 1;// 不能吃完说明当前 k 较小收缩左边界}}return l;}public boolean check(int[] piles, int h, int mid) {int sum piles.length;for (int pile : piles) {sum (pile - 1) / mid;if (sum h) {return false;}}return true;}
}