【LeetCode75】第五十六题 爱吃香蕉的珂珂

news2024/11/19 7:30:36

目录

题目:

示例:

分析:

代码:


题目:

示例:

分析:

这道题挺炸裂的,题目给我们一个数组,数组里的每个元素表示每个仓库里的香蕉数量。

珂珂可以自己控制自己吃香蕉的速度,也就是每小时可以吃几根香蕉,不过同一个小时只会待在同一个仓库里,也就是所就算吃完了一个仓库的香蕉,并且一小时里还有剩余时间,它也不会跑去其他仓库吃。

问我们在h小时内吃完所有仓库的所需最小的速度是多少,因为珂珂这个b想要慢慢地偷吃。

首先题目给出条件:

 h是大于仓库数量的,所以我们是一定的得出答案的。

如果把速度定成所有仓库里最多的香蕉数,那么吃完吃需要仓库数量的时间,也是至少要花的时间,因为你速度再提高也不会减少花费的时间。

而速度最低定成1,那么吃完仓库数量的时间就是所有仓库里香蕉的数量总和。

我们就把速度的范围定下来了,就是 [ 1 , 仓库里最多的香蕉数 ] ,确定范围之后,我们可以使用二分查找法来进一步缩小范围,最终确定答案。

我们每次取范围的中间数当作速度,看看按照这个速度吃完的时间有没有超过h,如果没有超过,那么就说明我们还有可能可以再慢一些,那么我们收缩右范围来使得范围的中位数变小。如果超过了h,那就说明我们的速度偏慢了,得提高速度,那么就要收缩左范围来使得范围的中位数变大。

最终我们就可以把范围缩小到答案。

代码:

class Solution {
public:
    int eat(const vector<int>& piles,int time){ //如果以time的速度吃,需要多久
        int ans=0;
        for(int p:piles){
            //如果剩余数量不是time的整数倍,那么需要额外+1
            if(p%time!=0)   ans++;
            ans+=p/time;
        }
        return ans;
    }
    int minEatingSpeed(vector<int>& piles, int h) {
        int l=1;int r=piles[0]; //左闭右闭
        for(int p:piles) r=max(r,p);
        int time;
        int res=r;
        while(l<r){
            int temp=l+(r-l)/2;
            time=eat(piles,temp);
            if(time<=h){    //如果当前速度满足条件,那么缩小右边界看看能不能用更小的速度.
                res=temp;
                r=temp;
            }else{  //如果不满足条件,那么缩小左边界,提升速度.
                l=temp+1;
            }
        }
        return res;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1011445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

头条移动端项目Day08 —— 定时计算热点文章、XXL-JOB

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

算法——快乐数

202. 快乐数 - 力扣&#xff08;LeetCode&#xff09; 由图可知&#xff0c;其实这也是一个判断循环的过程&#xff0c;要用到快慢指针&#xff0c;且相遇后&#xff0c;若在全为1的循环里&#xff0c;那么就是快乐数&#xff0c;若相遇后不为1&#xff0c;说明这不是快乐数。 …

适合初学者快速入门的Numpy实战全集

适合初学者快速入门的Numpy实战全集 Numpy是一个用python实现的科学计算的扩展程序库&#xff0c;包括&#xff1a; 1、一个强大的N维数组对象Array&#xff1b;2、比较成熟的&#xff08;广播&#xff09;函数库&#xff1b;3、用于整合C/C和Fortran代码的工具包&#xff1b…

文心一言 VS 讯飞星火 VS chatgpt (92)-- 算法导论8.3 5题

五、用go语言&#xff0c;在本节给出的第一个卡片排序算法中&#xff0c;为排序 d 位十进制数&#xff0c;在最坏情况下需要多少轮排序?在最坏情况下&#xff0c;操作员需要记录多少堆卡片? 文心一言&#xff1a; 你提到的第一个卡片排序算法可能是指的基数排序&#xff08…

ABAQUS三维随机生长四参数法插件:QSGS3D - AbyssFish

插件介绍 QSGS3D - AbyssFish 插件可在Abaqus软件基于Quartet Structure Generation Set&#xff08;QSGS&#xff09;随机生长四参数生成法构建三维多孔介质双相材料&#xff0c;插件可指定生成试件的长度、宽度、高度以及划分的网格单元尺寸。可控制随机生长四参数中的分布概…

为什么建议将常量用const关键字来修饰

嵌入式软件中&#xff0c;内存资源是非常宝贵的&#xff0c;即sram资源。因此我们在编码过程中需要规划好并且使用好sram资源&#xff0c;这点非常重要&#xff01; 在此之前需要预备一点基础知识&#xff0c;在IAR中&#xff0c;一般会用ICF配置文件给工程配置存储区域&#…

Ae 效果:CC Particle World

模拟/CC Particle World Simulation/CC Particle World CC Particle World&#xff08;CC 粒子世界&#xff09;用于在三维空间中生成和模拟各种粒子系统&#xff0c;包括火焰、雨、雪、爆炸、烟雾等等。 效果名称左侧的立方体图标表示此效果支持 3D 摄像机。本效果也内置了“效…

用原生input type=range 写一个滑块,兼容各大浏览器

属性描述max设置或返回滑块控件最大值min设置或返回滑块控件最小值step设置或返回每次拖动滑块控件时的递增量value设置或返回滑块控件的value值defaultValue设置或返回滑块控件的默认值autofocus设置或返回滑块控件在页面加载后是否应自动获取焦点 先看谷歌浏览器: 览器 用…

centos免密登录

centos免密登录 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.知道服务器密码的情况 ssh-keygen -t rsa #上面的命令后三次回车#然后把想要免密登录的服务器加进来 ssh-copy-id -i /root/.ssh/id_rsa.pub root192.168.10.115 #免密码登录被控的主机&#xff08;ip是…

R语言用逻辑回归预测BRFSS中风数据、方差分析anova、ROC曲线AUC、可视化探索

全文链接&#xff1a;https://tecdat.cn/?p33659 行为风险因素监测系统&#xff08;BRFSS&#xff09;是一项年度电话调查。BRFSS旨在确定成年人口中的风险因素并报告新兴趋势&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 例如&#xff0c;调查对…

用户生命周期价值-LTV、PEST分析、集团战略规划方案、麦肯锡的市场研究方法、数据规划架构设计··· | 本周精华...

▲点击上方卡片关注我&#xff0c;回复“8”&#xff0c;加入数据分析领地&#xff0c;一起学习数据分析&#xff0c;持续更新数据分析学习路径相关资料~&#xff08;精彩数据观点、学习资料、数据课程分享、读书会、分享会等你一起来乘风破浪~&#xff09;回复“小飞象”&…

C【分支语句和循环语句】

1.if语句 //多分支 if(表达式1)语句1; else if(表达式2)语句2; else语句3;如果表达式的结果为真&#xff0c;则语句执行。 在C语言中如何表示真假&#xff1f; 0表示假&#xff0c;非0表示真。 #include <stdio.h> int main() {if(表达式){语句列表1&#xff1b;}el…

美团多场景建模的探索与实践

总第574篇 2023年 第026篇 本文介绍了美团到家/站外投放团队在多场景建模技术方向上的探索与实践。基于外部投放的业务背景&#xff0c;本文提出了一种自适应的场景知识迁移和场景聚合技术&#xff0c;解决了在投放中面临外部海量流量带来的场景数量丰富、场景间差异大的问题&a…

JAVA - File类、字节流、字符流、特殊操作流

1.File类的构造方法 File类的创建文件功能 File类的判断和获取功能 File类的删除功能 2.IO流 - 字节流、字符流 字节流 处理字节数据&#xff1a;字节流以字节为单位处理数据&#xff0c;适用于处理二进制文件&#xff08;如图像、音频、视频文件&#xff09;或以字节为基本单…

Unity工具——LightTransition(光照过渡)

需求描述 在游戏中&#xff0c;开发者为了让玩家更直接地看到待拾取的物品从而为其添加一种闪烁效果&#xff0c;或者模拟现实中闪烁的灯光效果&#xff0c;我能够想到的一种方案则是通过控制光照强度来实现&#xff0c;那么本篇文章我们就尝试通过这个方案来实现一下&#xff…

【面试题精讲】你了解String.intern方法吗

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 String.intern 方法是 Java 中的一个方法&#xff0c;「它用于将字符串对象添加到字符串常量池中&#xff0c;并返回常量…

浅谈C++|STL之算法函数篇

一.遍历常用算法 1.1for_each 在 C 中&#xff0c;for_each 是一个算法函数&#xff0c;位于 <algorithm> 头文件中。它接受一个范围&#xff08;容器或迭代器对&#xff09;以及一个函数对象&#xff08;函数指针、函数、lambda 表达式等&#xff09;&#xff0c;用于…

C#,《小白学程序》第二十四课:大数的阶乘(BigInteger Factorial)算法与源程序

1 文本格式 /// <summary> /// 《小白学程序》第二十四课&#xff1a;大数&#xff08;BigInteger&#xff09;的阶乘 /// 用于大数的阶乘算法&#xff08;原始算法&#xff09; /// </summary> /// <param name"a"></param> /// <retur…

【算法挨揍日记】day05——209. 长度最小的子数组、3. 无重复字符的最长子串

209. 长度最小的子数组 209. 长度最小的子数组 题目描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在…

2023-9-14 最长上升子序列

题目链接&#xff1a;最长上升子序列 #include <iostream> #include <algorithm>using namespace std;const int N 1010;int n; int a[N]; int f[N];int main() {cin >> n;for(int i 1; i < n; i ) cin >> a[i];for(int i 1; i < n; i ){f[i]…