算法题 — 可可喜欢吃香蕉(二分查找法)

可可喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开,将在 H 小时后回来。

可可可以决定它吃香蕉的速度为 speed (单位:根/小时)。每个小时,可可都会选择一堆香蕉,并吃掉 speed 根。如果这堆香蕉少于 K 根,可可就会吃掉这堆里所有的香蕉,然后,在这一小时内不会吃更多的香蕉。

可可想要在警卫回来之前吃掉所有的香蕉。

示例:

输入:piles = [3, 6, 7, 11],h = 8,输出:4

输入:piles = [30, 11, 23, 4, 20],h = 5,输出:30

输入:piles = [30, 11, 23, 4, 20],h = 6,输出:23

fun main() {val piles1 = arrayOf(3, 6, 7, 11)val piles2 = arrayOf(30, 11, 23, 4,20)getMinSeed(piles1, 8)getMinSeed(piles2, 5)getMinSeed(piles2, 6)
}fun getMinSeed(piles: Array<Int>, h: Int): Int {var left = 1 // 最小的速度var right = getMaxNum(piles)  // 最大速度,最大速度是数组中最大的的元素数量while (left < right) {val mid = left + (right - left) / 2if (canFinish(piles, mid, h)) {right = mid} else {left = mid + 1}}return left
}/*** 按照当前的速度是否可以吃完香蕉*/
fun canFinish(piles: Array<Int>, speed: Int, h: Int): Boolean {var t = 0 // 按照当前的速度,吃完所有的香蕉所需要的时间for (num in piles) {if (num % speed != 0) {t++}t += num / speed}return t <= h
}/*** 获取数组中的最大值*/
fun getMaxNum(piles: Array<Int>): Int {var max = 0for (n in piles) {// 获取 piles 数组中最大的元素值max = n.coerceAtLeast(max)}return max
}

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

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

相关文章

大漠插件7.2422

工具名称:大漠插件7.2422 /更新时间2024年6月2日 / v7.2422 1. 综合工具的图像编辑工具可以缩放窗口了 2. 增加AiFindPic AiFindPicEx AiFindPicMem AiFindPicMemEx AiEnableFindPicWindow 共5个接口 / 工具简介: 大漠 综合 插件 (dm.dll)采用vc6.0编写&#xff0c;识别速度超级…

TMS320F280049学习2:点灯

TMS320F280049学习2&#xff1a;点灯 文章目录 TMS320F280049学习2&#xff1a;点灯一、工程代码二、代码解释1.Device_initGPIO()2.EINT、DINT3.ERTM、DRTM 总结 一、工程代码 #include "driverlib.h" #include "device.h"#define DRV_LED2_PIN …

【Numpy】04 深入理解NumPy的高级索引技术

掌握NumPy&#xff1a;从新手到高手的数组操作之旅 前言 前面【Numpy】03 数组的切片和索引操作深入详解的切片和索引操作只能索引出有规律的元素数据&#xff0c;比如同轴向&#xff0c;若要索引如下元素则无法实现&#xff0c;下面就介绍数组的高级索引&#xff08;花式索引…

Java 初识

Java 的发展历程 Sun 公司。 Oracle 公司。 普通版本&#xff0c;也叫过渡版本。 正式版本&#xff0c;也叫长期支持版本&#xff08;LTS&#xff09;。 Java SE&#xff0c;Java EE&#xff0c;Java ME Java 技术体系分为三个平台&#xff1a;Java SE&#xff0c;Java EE&a…

EasyExcel导出多个sheet封装

导出多个sheet 在需求中&#xff0c;会有需要导出多种sheet的情况&#xff0c;那么这里使用easyexcel进行整合 步骤 1、导入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><d…

多尺度注意力创新

深度之眼17种多尺度注意力创新

西门子PLC学习之数据块的单个实例,多重实例与参数实例间的区别

首先介绍下函数&#xff0c;函数块与数据块这三个概念。 数据块 数据块里可以存储各种类型的参数。有人可能会问&#xff0c;m寄存器不是可以存储布尔值&#xff0c;8位&#xff0c;16位&#xff0c;32位变量吗&#xff0c;为什么要多此一举&#xff1f;因为虽然m寄存器能存储以…

​​​​​​​月薪20K的程序员应具备怎样的技能和水平?

在当今互联网高速发展的时代&#xff0c;程序员的薪资水平也在不断提高。对于月薪20K的程序员来说&#xff0c;他们不仅需要具备扎实的编程基础&#xff0c;还需要掌握一系列与工作相关的技能和能力。 月薪20K的程序员应具备怎样的技能和水平&#xff1f; 相信这是一个很多人都…

Elasticsearch 认证模拟题 - 8

一、题目 在集群中输入以下指令&#xff1a; PUT phones/_doc/1 {"brand":"Samsumg","model":"Galaxy S9","features":[{"type":"os", "value":"Android"},{"type":&q…

@Scheduled注解创建定时任务的 3 种模式

Scheduleed注解的介绍 在Spring Boot中&#xff0c;Scheduled 注解用于创建定时任务&#xff0c;提供了三种常见的模式&#xff1a; Fixed Rate&#xff08;固定速率&#xff09; Fixed Delay&#xff08;固定延迟&#xff09; Cron Expression&#xff08;Cron表达式&…

什么是智慧零售?智慧零售的发展前景如何?

在零售业的快速发展中&#xff0c;市场竞争日益激烈&#xff0c;产品同质化严重&#xff0c;线下销售与线上商店的竞争加剧&#xff0c;资金成本问题日益凸显。这些问题不仅限制了零售业的发展&#xff0c;也给消费者带来了诸多不便。然而&#xff0c;智慧零售的出现&#xff0…

ElementUI中date-picker组件,怎么把大写月份改为阿拉伯数字月份(例如:一月、二月,改为1月、2月)

要将 Element UI 的 <el-date-picker> 组件中的月份名称从中文大写&#xff08;如 "一月", "二月"&#xff09;更改为阿拉伯数字&#xff08;如 "1月", "2月"&#xff09;&#xff0c;需要进行一些定制化处理。可以通过国际化&a…

查看Hive表的描述信息,包括在HDFS上的Location信息

/hive/bin/beeline beeline> !connect jdbc:hive2://ip:10000 输入用户名 输入密码 DESCRIBE FORMATTED 表名; 下面的例子 No rows affected (0.820 seconds) 0: jdbc:hive2://ip:10000> DESCRIBE FORMATTED demo; INFO : Compiling command(queryIdroot_20240601141007…

45-5 护网溯源 - 远控木马样本溯源

在分析恶意样本时&#xff0c;需要查看包括作者名字、ID、IP地址、域名等在内的相关信息。 把恶意样本上传到微步、360沙箱云分析&#xff1a;样本报告-微步在线云沙箱 (threatbook.com) 动态分析 运行截图 发现该木马是与一个装机软件绑定的&#xff0c;你运行正常软件的时候…

封装组件库仿elementui<1>

目录 type属性 引入字体图标 button的点击事件 disabled属性 methods:{//点击事件是外部注册的handleClick(e){this.$emit(click,e)//通知父组件点击了&#xff0c;点了按钮&#xff0c;触发外界的click&#xff1f;传参为事件对象//向父组件派发了click事件} }, type属性…

操作系统基本特性:并发、共享、虚拟、异步

目录 一.并发 1.并发的优势 2.并发的实现 3.并发的应用场景 4.并发的挑战 二.共享 1.共享的优势 2.共享资源的实现机制 3.进程同步和互斥 4.避免冲突和死锁 5.实例分析 文件共享 内存共享 设备共享 三.虚拟 1.虚拟技术的优势 2.虚拟化技术的主要实现 3.实例分…

项目进度管理必备:15款最佳项目进度跟踪工具推荐

15好用的款主流项目进度管理软件&#xff1a;PingCode、Worktile、Trello、Tower、Asana、Smartsheet、Teambition、ClickUp、Wrike、Monday.com、Notion、禅道、飞书、云效、蓝凌。 严格的进度管理有助于更好地控制项目进展&#xff0c;提升团队效率&#xff0c;最终实现项目成…

组合已实现的函数完成K-means算法

本关任务 本关综合前面四个关卡的内容来实现K-means聚类算法。 相关说明 K-means是一类非常经典的无监督机器学习算法&#xff0c;通常在实际应用中用于从数据集中找出不同样本的聚集模式&#xff0c;其基本原理就是类中样本的距离要远远小于类间样本的距离。 K-means聚类算…

减调食谱攻略:美味低卡又健康

早餐主要求质&#xff0c;也就是求营养&#xff0c;更确切的说是“均衡的营养&#xff0c;多重的营养元素”确保每天早餐不重样就差不多了。 早餐主食&#xff1a;蛋羹、糖心水煮蛋&#xff0c;皮蛋瘦肉粥、南瓜粥、小米粥&#xff0c;蒸煮玉米、南瓜、芋头、红薯&#xff0c;…

【Linux】The server quit without updating PID file的几种解决方案

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…