当前位置:网站首页>875. 爱吃香蕉的珂珂 - 力扣(LeetCode)
875. 爱吃香蕉的珂珂 - 力扣(LeetCode)
2022-07-06 09:28:00 【你好_Ä】
875. 爱吃香蕉的珂珂 - 力扣(LeetCode)
力扣2022/6/7每日一题
珂珂喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 h 小时后回来。
珂珂可以决定她吃香蕉的速度 k (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 k 根。如果这堆香蕉少于 k 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。
珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。
返回她可以在 h 小时内吃掉所有香蕉的最小速度 k(k 为整数)。
示例 1:
输入:piles = [3,6,7,11], h = 8
输出:4
提示:
1 <= piles.length <= 10^4
piles.length <= h <= 10^9
1 <= piles[i] <= 10^9
问题解析
基础的二分答案问题,二分枚举可能的k,看k能否在规定的时间内吃完所有香蕉,如果可以说明我们速度还能继续小,如果不可以则说明我们速度要增加。
至于判断能否在规定时间内吃完香蕉,可以用枚举的mid遍历数组,如果能整除当前元素,说明吃完这一堆香蕉所用时间是(当前元素/mid),不能整除就再++。根据遍历数组后计数器的值和h的大小来判断,小于等于h就说明我们能在规定内吃完,反之不行。
AC代码
class Solution {
public:
bool check(int mid,int h,vector<int>& piles)
{
int res=0,n=piles.size();
for(int i=0;i<n;i++)
{
if(piles[i]%mid!=0)res++;
res+=piles[i]/mid;
}
return res<=h;
}
int minEatingSpeed(vector<int>& piles, int h) {
int l=1,r=1e9;
while(l<r)
{
int mid=(l+r)/2;
if(check(mid,h,piles))r=mid;
else l=mid+1;
}
return l;
}
};
边栏推荐
- 渗透测试 ( 3 ) --- Metasploit Framework ( MSF )
- Radar equipment (greedy)
- 7-1 understand everything (20 points)
- 1903. Maximum odd number in string
- Openwrt build Hello ipk
- 最全编程语言在线 API 文档
- “鬼鬼祟祟的”新小行星将在本周安全掠过地球:如何观看
- Read and save zarr files
- Penetration test (4) -- detailed explanation of meterpreter command
- 807. Maintain the urban skyline
猜你喜欢
Luogu P1102 A-B number pair (dichotomy, map, double pointer)
Data storage in memory & loading into memory to make the program run
Information security - threat detection engine - common rule engine base performance comparison
渗透测试 ( 8 ) --- Burp Suite Pro 官方文档
628. Maximum product of three numbers
b站 實時彈幕和曆史彈幕 Protobuf 格式解析
QT按钮点击切换QLineEdit焦点(含代码)
b站 实时弹幕和历史弹幕 Protobuf 格式解析
1689. Ten - the minimum number of binary numbers
【练习-4】(Uva 11988)Broken Keyboard(破损的键盘) ==(链表)
随机推荐
409. Longest palindrome
X-forwarded-for details, how to get the client IP
1689. Ten - the minimum number of binary numbers
If you want to apply for a programmer, your resume should be written like this [essence summary]
1013. Divide the array into three parts equal to and
力扣:第81场双周赛
Auto.js入门
Socket communication
Programmers, what are your skills in code writing?
渗透测试 ( 5 ) --- 扫描之王 nmap、渗透测试工具实战技巧合集
Raspberry pie csi/usb camera uses mjpg to realize web camera monitoring
Flask框架配置loguru日志庫
Write web games in C language
Nodejs crawler
Information security - threat detection - Flink broadcast stream broadcaststate dual stream merging application in filtering security logs
渗透测试 ( 4 ) --- Meterpreter 命令详解
QT按钮点击切换QLineEdit焦点(含代码)
MySQL grants the user the operation permission of the specified content
[analysis of teacher Gao's software needs] collection of exercises and answers for level 20 cloud class
PySide6 信号、槽