首页 > 其他分享 >力扣---875. 爱吃香蕉的珂珂

力扣---875. 爱吃香蕉的珂珂

时间:2023-06-11 19:55:45浏览次数:37  
标签:香蕉 --- lower piles upper int 875 mid 力扣

珂珂喜欢吃香蕉。这里有 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 <= 104
piles.length <= h <= 109
1 <= piles[i] <= 109

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/koko-eating-bananas
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


对于这类猜答案的题,一般都可以通过找到上界和下界,利用二分法来优化。

这道题的下界,很明显是 1。上界,可以想到等于 piles 数组中的最大值。

class Solution {
    public int minEatingSpeed(int[] piles, int h) {
        // 答案下界
        int lower = 1;
        // 答案上界
        int upper = Integer.MIN_VALUE;
        // 寻找上界(数组中的最大值)
        for (int x : piles) {
            upper = Math.max(x, upper);
        }
        // 二分法
        while (lower < upper) {
            int mid = lower + ((upper - lower) >> 1);
            if (judge(mid, piles, h)) {
                upper = mid;
            } else {
                lower = mid + 1;
            }
        }
        return lower;
    }

// 判断答案是否小于 mid 。
    private boolean judge (int mid, int[] piles, int h) {
        int sum = 0;
        for (int pile : piles) {
            sum += (pile + mid - 1) / mid;
            if (sum > h) {
                return false;
            }
        }
        return true;
    }
}

 

标签:香蕉,---,lower,piles,upper,int,875,mid,力扣
From: https://www.cnblogs.com/allWu/p/17473464.html

相关文章

  • 关于python程序打包的问题-找不到fsspec
    转载自:https://blog.csdn.net/weixin_47861710/article/details/121267155这个问题困扰了我将近两天的时间一直找不到什么好的办法,甚至打算放弃。主要原因是身边没有可以述说的人,也没有可以请教的人。正在想要放弃的时候找到了解决办法。打包后运行程序是这样的,大概意思是找不......
  • DevOps落地实践点滴和踩坑记录-(2) -聊聊企业内部DevOps平台建设
    很久没有写文章记录了,上一篇文章像流水账一样,把所见所闻一个个记录下来。这次专门聊聊DevOps平台的建设吧,有些新的体会和思考,希望给正在做这个事情的同学们一些启发吧。DevOps落地实践点滴和踩坑记录-(1)企业落地DevOps该买商用还是自己研发呢?很多团队刚开始都会问这个问题,我的回......
  • 基于Drone+Gogs流水线-全面认识轻量级云原生CI引擎Drone
    1.介绍DronebyHarness™是一个基于Docker容器技术的可扩展的持续集成引擎,用于自动化测试、构建、发布。每个构建都在一个临时的Docker容器中执行,使开发人员能够完全控制其构建环境并保证隔离。开发者只需在项目中包含.drone.yml文件,将代码推送到git仓库,Drone就能够自动化的......
  • 对象存储服务-Minio
    Mino目录Mino对象存储服务Minio参考Minio架构为什么要用Minio存储机制纠删码MinIO概念部署单机部署:Docker部署Minio分布式MinioMinio配置如何存储和访问对象MinIOClient(mc)命令使用通过代码存储对象对象存储服务(ObjectStorageService,OSS)是一种海量、安全、低成......
  • 【Kubernetes学习笔记】-kubeadm 手动搭建kubernetes 集群
    目录K8S组件构成环境准备(以ubuntu系统为例)1.kubernetes集群机器2.安装docker、kubeadm、kubelet、kubectl2.1在每台机器上安装docker2.2每台机器上安装kubelet、kubeadm、kubectl创建kubernetes集群kubeadm在master节点init集群在worker节点执行命令......
  • 利用arm cortex-m芯片 SIMD加速LVGL的文字渲染
    最近手上有个项目,对流畅度要求到极致。就是要满60fps的那种。所以针对各个模块的渲染都有一些改进。文字渲染加速就式其中之一。趁着记忆尤新把这个给记录下来SIMD介绍SIMD(单指令多数据)是一种计算机指令集架构,它允许处理器同时对多个数据元素执行相同的操作。这种指令集架构可......
  • 通过 docker-compose 快速部署 Azkaban 保姆级教程
    目录一、概述二、Azkaban的调度流程三、前期准备1)部署docker2)部署docker-compose四、创建网络五、Azkaban编排部署1)安装MySQL2)下载Azkaban编译3)初始化azkaban用户和表4)配置5)启动脚本bootstrap.sh6)构建镜像Dockerfile7)编排docker-compose.yaml8)开始部署六、简单测试验......
  • 通过ngx-lua来统计nginx上的虚拟主机性能数据
    介绍以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力.项目主页:https://github.com/skyeydemon/ngx-lua-stats功能支持分不同虚拟主机统计,同一个虚拟主机下可以分不同的location统计.可以统计与query-......
  • 单机下RocketMq安装-多Master模式
    版本:5.1.1官方下载地址:https://rocketmq.apache.org/zh/downloadjdk版本:jdk1.8.0_201在指定目录下新建文件夹rocketmq,并下载安装包到目录下cd/usr/localmkdirrocketmqwgethttps://dist.apache.org/repos/dist/release/rocketmq/5.1.1/rocketmq-all-5.1.1-bin-release.zi......
  • 0-1背背包问题
    0-1背包问题参考链接:https://en.wikipedia.org/wiki/Knapsack_problem/***0-1背包问题*将n个价值为v,重量为v的物品放入限重为W的背包中,要求背包中物品的价值最高。**/importjava.util.HashSet;importjava.util.Set;publicclassKnapsack{//物品的价......