华为OD面试手撕真题 - 爱吃香蕉的珂珂

题目描述

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

珂珂可以决定她吃香蕉的速度k(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉k根。如果这堆香蕉少于k根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。

珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。

返回她可以在h小时内吃掉所有香蕉的最小速度kk为整数)。

示例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

题解

力扣原题链接

思路:二分

  • 从题目来看,这道题肯定有解,所以不需要考虑h <= 香蕉堆数的情况

  • 接下来考虑H = 香蕉堆数量时, 结果肯定为max(香蕉堆香蕉的数量). 因为每个小时要处理一个香蕉堆,要保证能在一个小时内吃完一堆香蕉

  • 最后考虑H > 香蕉堆数量时,怎么确定k的值。采用二分进行确定,left = 1, right = max(所有香蕉堆香蕉数量),每次枚举mid = (right + left) / 2是否可以在指定时间内把所有香蕉堆上香蕉吃完。

    • 不能吃完,更新left = mid + 1
    • 能吃完,更新right = mid
  • 二分退出条件为left == right

  • 最终的left的值就是结果。

额外注意:所有香蕉堆中香蕉数量 可能超过int范围,需要使用long范围。

c++

class Solution { public: // 计算所需时间是否小于h bool check(vector<int>& piles, long k, int h) { int needHour = 0; int n = piles.size(); for (int i = 0; i < n; i++) { // 向上取整 needHour += ( piles[i] + k - 1) / k; } return needHour <= h; } int minEatingSpeed(vector<int>& piles, int h) { long left = 1, right = 0; int n = piles.size(); for (int i = 0; i < n; i++) { right += piles[i]; } // 二分 while (left < right) { long mid = (left + right) >> 1; if (check(piles, mid, h)) { right = mid; } else { left = mid + 1; } } return left; } };

JAVA

class Solution { // 计算在速度 k 下吃完是否不超过 h 小时 private boolean check(int[] piles, long k, int h) { long needHour = 0; for (int pile : piles) { // 向上取整 needHour += (pile + k - 1) / k; } return needHour <= h; } public int minEatingSpeed(int[] piles, int h) { long left = 1, right = 0; for (int pile : piles) { right += pile; } // 二分查找最小可行速度 while (left < right) { long mid = (left + right) >> 1; if (check(piles, mid, h)) { right = mid; } else { left = mid + 1; } } return (int) left; } }

Python

classSolution:# 计算在速度 k 下吃完是否不超过 h 小时defcheck(self,piles,k,h):needHour=0forpileinpiles:# 向上取整needHour+=(pile+k-1)//kreturnneedHour<=hdefminEatingSpeed(self,piles,h):left,right=1,sum(piles)# 二分查找whileleft<right:mid=(left+right)//2ifself.check(piles,mid,h):right=midelse:left=mid+1returnleft

JavaScript

/** * @param {number[]} piles * @param {number} h * @return {number} */varminEatingSpeed=function(piles,h){// 计算在速度 k 下吃完是否不超过 h 小时functioncheck(k){letneedHour=0;for(letpileofpiles){// 向上取整needHour+=Math.floor((pile+k-1)/k);}returnneedHour<=h;}letleft=1;letright=piles.reduce((a,b)=>a+b,0);// 二分查找while(left<right){letmid=Math.floor((left+right)/2);if(check(mid)){right=mid;}else{left=mid+1;}}returnleft;};

Go

funcminEatingSpeed(piles[]int,hint)int{// 检查在速度 k 下是否可以在 h 小时内吃完check:=func(kint)bool{needHour:=0for_,pile:=rangepiles{// 向上取整:(pile + k - 1) / kneedHour+=(pile+k-1)/k}returnneedHour<=h}left,right:=1,0for_,pile:=rangepiles{right+=pile}// 二分查找最小可行速度forleft<right{mid:=(left+right)>>1ifcheck(mid){right=mid}else{left=mid+1}}returnleft}

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

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

相关文章

学Simulink--基础MPPT控制场景实例:基于Simulink的自适应模糊PI-MPPT控制仿真

目录 手把手教你学Simulink 一、引言&#xff1a;为什么需要“自适应模糊PI”做MPPT&#xff1f; 二、系统整体架构 控制思想&#xff1a; 三、控制策略详解 1. 为什么用“功率”作为反馈&#xff1f; 2. 自适应模糊PI结构 输入变量&#xff08;模糊化&#xff09;&…

Pulse news stream Beta版用户使用调研报告

Pulse news stream Beta版已完成核心功能开发并上线试用&#xff0c;为精准掌握用户对产品的使用体验、验证核心功能的实用性与易用性&#xff0c;明确产品优化方向&#xff0c;团队开展了本次用户使用调研工作。本报告将详细呈现调研全流程及核心结论&#xff0c;为后续产品迭…

掌握数据可视化:从基础到实战的完整指南

前言&#xff1a;数据可视化是数据分析师的核心技能之一&#xff0c;也是将复杂数据转化为商业价值的关键桥梁。本文基于Matplotlib、Seaborn、Plotly等主流工具&#xff0c;从核心概念到实战案例&#xff0c;再到设计原则&#xff0c;系统梳理数据可视化的学习路径。所有代码均…

Windows 下升级 R 语言至最新版

第一步:打开 PowerShell(以管理员身份运行) 按 Win + X 选择 “Windows PowerShell (管理员)” 或 “终端(管理员)” 等待弹出窗口(黑底白字,标题为 “PowerShell”) 第二步:复制并粘贴以下完整脚本 # 设置进度偏好(静默下载) $ProgressPreference = SilentlyContin…

Pulse news stream Beta冲刺博客

本次Beta冲刺是Pulse news stream项目从原型走向可测试版本的关键阶段&#xff0c;核心目标是完成核心功能的开发与集成&#xff0c;修复前期原型阶段遗留的问题&#xff0c;优化用户体验&#xff0c;为后续正式版本发布奠定基础。本文将详细阐述团队在本次冲刺中的任务拆分、时…

AI原生应用领域推理能力的生成对抗网络实践

AI原生应用领域推理能力的生成对抗网络实践 引言&#xff1a;AI原生应用的“推理瓶颈”与GAN的破局之道 1.1 当AI原生应用遇到“推理困境” 在ChatGPT、MidJourney、GitHub Copilot等AI原生应用&#xff08;AI-Native Application&#xff09;爆发的今天&#xff0c;用户对AI的…

基于Springboot计算机网络教学系统【附源码+文档】

&#x1f495;&#x1f495;作者&#xff1a; 米罗学长 &#x1f495;&#x1f495;个人简介&#xff1a;混迹java圈十余年&#xff0c;精通Java、小程序、数据库等。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xff0c;springboot等项目&#…

基于Springboot学生成绩量化管理系统【附源码+文档】

&#x1f495;&#x1f495;作者&#xff1a; 米罗学长 &#x1f495;&#x1f495;个人简介&#xff1a;混迹java圈十余年&#xff0c;精通Java、小程序、数据库等。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xff0c;springboot等项目&#…

Flutter环境搭建与项目创建详解

Flutter环境搭建与项目创建详解&#xff1a;从零开始构建跨平台应用 引言 在移动应用开发领域&#xff0c;跨平台解决方案已成为提升开发效率、降低维护成本的关键选择。Google推出的Flutter框架凭借其卓越的性能表现、统一的开发体验和丰富的UI组件&#xff0c;正在迅速改变…

基于YOLOv10的大豆杂草检测系统(YOLOv10深度学习+YOLO数据集+UI界面+Python项目源码+模型)

一、项目介绍 摘要 本项目基于先进的YOLOv10目标检测算法&#xff0c;开发了一套针对大豆田间杂草的高精度实时检测系统。系统能够准确识别并区分大豆植株("soy plant")和杂草("weed")两类目标&#xff0c;分类数(nc)为2。项目使用了总计1,302张高质量标…

揭秘AI应用架构师如何打造卓越的智能数字身份验证系统

揭秘AI应用架构师的进阶之路:打造安全、智能、极致体验的数字身份验证系统 元数据框架 标题 揭秘AI应用架构师的进阶之路:打造安全、智能、极致体验的数字身份验证系统 关键词 AI身份验证、行为生物识别、多模态融合、持续认证、零信任架构、隐私保护、模型鲁棒性 摘要…

从规模到智能:大模型架构演进全指南(值得收藏学习)

本文详细分析了2023年至2025年6月大型语言模型的架构演进历程&#xff0c;从GPT-4时代的规模扩张&#xff0c;到效率驱动的MoE架构和新型注意力机制&#xff0c;再到推理(Thinking)范式的兴起&#xff0c;最后展望具身智能与后Transformer架构。文章指出&#xff0c;现代AI架构…

基于YOLOv10的水果品种分类检测系统(YOLOv10深度学习+YOLO数据集+UI界面+Python项目源码+模型)

一、项目介绍 摘要 水果品种的精准识别在农产品分级、智能零售和自动化分拣等领域具有重要应用价值。本研究开发了一种基于YOLOv10的高精度水果品种实时检测系统&#xff0c;可实现对6类常见水果品种&#xff08;金冠苹果、澳洲青苹果、梨子、红富士苹果、红油桃、黄桃&#…

第七十篇-V100-32G+命令行代码+运行Flux.1-Schnell+Lora+文生图

代码 r_test_1.py import torch import time import argparse import os from datetime import datetime from diffusers import FluxPipelinedef setup_environment():"""设置环境变量优化V100性能"""os.environ["PYTORCH_CUDA_ALLOC_CONF…

【珍藏必看】2026年AI产品经理转型全攻略:从零基础到4大岗位分类,5步快速入门!

文章详细介绍了产品经理如何转型为AI产品经理&#xff0c;涵盖AI产品发展趋势、四大岗位分类&#xff08;C端、B端、硬件型、技术型&#xff09;&#xff0c;以及转型所需的AI知识体系和实践方法。文章强调AI是未来趋势&#xff0c;传统产品经理需主动转型&#xff0c;提供了具…

2026年最新爆火AI论文工具:8款神器实测,开题报告免费写,30分钟搞定初稿!

⚠️ 最后72小时&#xff01; 2026毕业季进入倒计时&#xff0c;导师催稿、查重爆炸、问卷数据空白——你还有多少时间能浪费&#xff1f;本文为你带来深夜急救级AI论文工具实测清单&#xff0c;让你用最快速度抢回主动权&#xff0c;30分钟产出初稿&#xff0c;开题报告免费拿…

2026年AI大模型高薪路线:从入门到精通的学习宝典,大模型人才的薪资,彻底爆了

本文详细解析了2025年AI大模型行业的高薪前景&#xff0c;介绍了5大高薪岗位及必备技能&#xff0c;提供了从学历提升到项目实战的全面建议&#xff0c;并预测未来3年行业发展趋势。掌握大模型技术&#xff0c;不仅能获得百万年薪&#xff0c;更是抓住AI红利的关键机遇。开门见…

从应用到框架:Deep Research与Deep Agent的关系深度解析

文章解析了Deep Research&#xff08;深度研究智能体&#xff09;与Deep Agent&#xff08;深度智能体&#xff09;的关系。Deep Research是一种针对复杂问题进行深入研究的智能体应用&#xff0c;而Deep Agent是实现复杂任务的通用架构范式。两者发展呈现"先场景落地&…

lambda的变量捕获机制

https://blog.csdn.net/weixin_69059394/article/details/155944312?spm1001.2014.3001.5502 上述博客的进程中断中提到了lambda的变量捕获机制。 public class demo6 {public static boolean isFinishedfalse;public static void main(String[] args) throws InterruptedExc…