当前位置: 首页 > news >正文

华为OD机试真题——猴子吃桃/爱吃蟠桃的孙悟空(2025B卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

在这里插入图片描述

2025 B卷 200分 题型

本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析;
并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式!

本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》

华为OD机试真题《猴子吃桃/爱吃蟠桃的孙悟空》:


目录

    • 题目名称:猴子吃桃/爱吃蟠桃的孙悟空
      • 题目描述
    • Java
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • python
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • JavaScript
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • C++
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • C语言
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • GO
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析


题目名称:猴子吃桃/爱吃蟠桃的孙悟空


知识点:二分查找、逻辑处理
时间限制:1秒
空间限制:256MB
语言限制:不限


题目描述

孙悟空喜欢吃蟠桃,一天他趁守卫不在偷吃蟠桃。已知蟠桃园有 N 棵桃树,每棵树上的蟠桃数量用数组表示,守卫将在 H 小时后回来。
孙悟空可以决定吃桃速度 K(个/小时),每小时选一棵树吃掉 K 个。若树上桃子少于 K,则全部吃掉,且这一小时内不再吃其他树。
求孙悟空在 H 小时内吃完所有蟠桃的 最小速度 K(整数),若无法完成则返回 0。

输入描述

  • 第一行:N 个正整数,表示每棵桃树上的蟠桃数量,空格分隔。
  • 第二行:一个正整数 H,表示守卫离开的时间。
  • 数据范围:0 < N < 100000 < H < 10000,每棵树上的蟠桃数量为正整数。

输出描述

  • 输出最小速度 K,无解或输入异常时输出 0。

示例
输入:

2 3 4 5  
4  

输出:

5  

说明:以速度 5 可在 4 小时内吃完所有桃子。


Java

问题分析

我们需要找到孙悟空在H小时内吃完所有蟠桃的最小速度K。每小时他可以选择一棵树吃掉K个,若树上的桃子少于K则全部吃掉,且这一小时内不再吃其他树。如果无法在H小时内吃完,返回0。


解题思路

  1. 输入验证:确保输入的桃树数量合法且H为正整数。
  2. 边界确定:最小速度K为1,最大K为桃树中桃子最多的数量。
  3. 二分查找:在可能的K范围内,通过二分查找找到满足条件的最小K。
  4. 时间计算:对于每个K,计算吃完所有桃子所需的总时间,并与H比较。

代码实现

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取桃树数组String[] firstLine = scanner.nextLine().split(" ");List<Integer> list = new ArrayList<>();try {for (String s : firstLine) {int num = Integer.parseInt(s);if (num <= 0) { // 桃子必须为正整数System.out.println(0);return;}list.add(num);}} catch (NumberFormatException e) { // 输入异常处理System.out.println(0);return;}if (list.isEmpty()) { // 无桃树情况System.out.println(0);return;}int[] piles = list.stream().mapToInt(i -> i).toArray();// 读取Hif (!scanner.hasNextInt()) { // 检查H是否为整数System.out.println(0);return;}int H = scanner.nextInt();if (H <= 0) { // H必须为正整数System.out.println(0);return;}// 检查H是否足够(至少需要N小时)if (H < piles.length) {System.out.println(0);return;}// 二分查找最小速度Kint left = 1;int right = Arrays.stream(piles).max().getAsInt();int ans = 0;while (left <= right) {int mid = left + (right - left) / 2;int time = calculateTime(piles, mid);if (time <= H) { // 时间足够,尝试找更小的Kans = mid;right = mid - 1;} else { // 时间不足,需要增大Kleft = mid + 1;}}System.out.println(ans);}// 计算以速度K吃完所有桃子的总时间private static int calculateTime(int[] piles, int K) {int total = 0;for (int pile : piles) {total += (pile + K - 1) / K; // 向上取整的技巧}return total;}
}

代码详细解析

  1. 输入处理

    • 使用Scanner读取输入,分割成字符串数组。
    • 将字符串转换为整数,处理非法输入(如非数字、非正数)。
  2. 输入验证

    • 检查桃树数组是否为空。
    • 检查H是否为正整数,且H不小于桃树数量。

文章转载自:

http://BshkKo2H.wftrs.cn
http://v6Ce7B9Z.wftrs.cn
http://FOYqZEjF.wftrs.cn
http://ADhnPtNA.wftrs.cn
http://xQw0D7wq.wftrs.cn
http://f0Yk23JW.wftrs.cn
http://dXjqpyTD.wftrs.cn
http://ocdkF3V3.wftrs.cn
http://SEgBEwKq.wftrs.cn
http://x3mUGD2k.wftrs.cn
http://6bAmqiA2.wftrs.cn
http://vC1F2krO.wftrs.cn
http://QgEMzCHP.wftrs.cn
http://ZTe5x84W.wftrs.cn
http://ELdDPCas.wftrs.cn
http://6S94awER.wftrs.cn
http://GrQzo5bW.wftrs.cn
http://iXwPmu4R.wftrs.cn
http://47BzGYZB.wftrs.cn
http://3FeNkbnV.wftrs.cn
http://nbRxv9QJ.wftrs.cn
http://olof347d.wftrs.cn
http://0hBUltE4.wftrs.cn
http://cfy2OQkt.wftrs.cn
http://OaILNKl4.wftrs.cn
http://CgqLHosk.wftrs.cn
http://0MlmgcTR.wftrs.cn
http://XyCZbS4j.wftrs.cn
http://wAtchxJk.wftrs.cn
http://Ofab6iPh.wftrs.cn
http://www.dtcms.com/a/214176.html

相关文章:

  • 高精度装配人形机器人|产品参数详细介绍
  • Linux系统调用深度剖析
  • Transformer,多头注意力机制 隐式学习子空间划分
  • 10:图像传参+UI界面互传
  • Higress MCP Server 安全再升级:API 认证为 AI 连接保驾护航
  • 【混合动力能量管理新突破:负载识别优化策略深度解析与仿真实战】
  • Python 进阶学习
  • JVM 深度解析
  • HarmonyOS NEXT~HarmonyOS 语言仓颉:下一代分布式开发语言的技术解析与应用实践
  • python网络编程
  • 三色标记法 判断有向图是否有环
  • Leetcode 3562. Maximum Profit from Trading Stocks with Discounts
  • CAD精简多段线顶点、优化、删除多余、重复顶点——CAD c#二次开发
  • 厚铜PCB线路板厂会如何处理质量问题?
  • 滑动窗口算法实时计算QPS:Java实现与原理分析
  • MAR:无需量化的掩码自回归图像生成模型
  • RuoYi前后端分离框架集成UEditorPlus富文本编辑器
  • 嵌入式学习(基本操作)day1
  • 在麒麟系统(Kylin OS)上安装`geckodriver`
  • 认识微服务
  • DNS 详情 新增 DNS 自适应服务器 ip
  • 【部署】在离线服务器的docker容器下升级dify-import程序
  • leetcode 3559. Number of Ways to Assign Edge Weights II
  • 【Hive基础】01.数据模型、存储格式、排序方式
  • 内网映射有什么作用,如何实现内网的网络地址映射到公网连接?
  • 【图像处理基石】什么是色彩模式?
  • 倚光科技在二元衍射面加工技术上的革新:引领光学元件制造新方向​
  • 佰力博科技与您探讨铁电分析仪具有哪些测试功能
  • 游戏引擎学习第313天:回到 Z 层级的工作
  • 聊天室H5实时群聊聊天室全开源系统(源码下载)