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

华为OD机考双机位C卷 - 基站维修工程师(Java Python JS GO C++ C)

基站维修工程师

2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷

华为OD机试双机位C卷真题目录点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)

题目描述

某部门开展Family Day开放日活动,其中有个从桶里取球的游戏,游戏规则如下:

有N个容量一样的小桶等距排开,

且每个小桶都默认装了数量不等的小球,

每个小桶装的小球数量记录在数组 bucketBallNums 中,

游戏开始时,要求所有桶的小球总数不能超过SUM,

如果小球总数超过SUM,则需对所有的小桶统一设置一个容量最大值 maxCapacity,

并需将超过容量最大值的小球拿出来,直至小桶里的小球数量小于 maxCapacity;

请您根据输入的数据,计算从每个小桶里拿出的小球数量。

限制规则一:

所有小桶的小球总和小于SUM,则无需设置容量值maxCapacity,并且无需从小桶中拿球出来,返回结果[]

限制规则二:

如果所有小桶的小球总和大于SUM,则需设置容量最大值maxCapacity,并且需从小桶中拿球出来,返回从每个小桶拿出的小球数量组成的数组;

输入描述

第一行输入2个正整数,数字之间使用空格隔开,其中第一个数字表示SUM,第二个数字表示bucketBallNums数组长度;
第二行输入N个正整数,数字之间使用空格隔开,表示bucketBallNums的每一项;

输出描述

找到一个maxCapacity,来保证取出尽量少的球,并返回从每个小桶拿出的小球数量组成的数组。

示例1

输入

14 7 2 3 2 5 5 1 4

输出

[0,1,0,3,3,0,2]

说明

小球总数为22,SUM=14,超出范围了,需从小桶取球,
maxCapacity=1,取出球后,桶里剩余小球总和为7,远小于14
maxCapacity=2,取出球后,桶里剩余小球总和为13,
maxCapacity=3,取出球后,桶里剩余小球总和为16,大于14
因此maxCapacity为2 ,每个小桶小球数量大于2的都需要拿出来;

示例2

输入

3 3 1 2 3

输出

[0,1,2]

说明

小球总数为6,SUM=3,超出范围了,需从小桶中取球,maxCapacity=1,则小球总数为3,从1号桶取0个球,2号桶取1个球,3号桶取2个球;

示例3

输入

6 2 3 2

输出

[]

说明

小球总数为5,SUM=6,在范围内,无需从小桶取球;

解题思路

这个问题的解题思路是通过二分查找来确定每个桶中保留的最大球数,以便使得保留的球数之和不超过目标和。以下是详细的解题方法:

  1. 首先,从输入中获取目标和(targetSum)和桶的数量(numBuckets)。
  2. 接下来,从输入中获取每个桶中的球数(ballsInBuckets)。
  3. 计算桶中球数的最大值(maxBalls)和总和(totalBalls)。
  4. 如果totalBalls大于targetSum,则开始寻找解决方案。否则,输出空列表,因为不需要移除任何球。
  5. 初始化二分查找的边界,left设置为1,right设置为maxBalls
  6. left小于等于right时,执行以下操作:
    a. 计算mid,即(left + right) / 2的向下取整。
    b. 计算每个桶中保留的球数,即ballsInBuckets中的每个元素与mid的较小值。
    c. 计算保留球数的总和(tempTotal)。
    d. 如果tempTotal小于等于targetSum,则更新maxCapacitymid,并将left设置为mid + 1。这意味着我们可以尝试保留更多的球,以便更接近目标和。
    e. 否则,将right设置为mid - 1。这意味着我们需要减少保留的球数,以使保留球数之和不超过目标和。
  7. 当二分查找完成后,我们找到了每个桶中保留的最大球数(maxCapacity)。
  8. 计算每个桶需要移除的球数,即ballsInBuckets中的每个元素减去maxCapacity的较大值。
  9. 输出结果,即每个桶需要移除的球数。

通过这种方法,我们可以在保证保留球数之和不超过目标和的前提下,找到每个桶需要移除的最小球数。

Java

importjava.util.Scanner;importjava.util.Arrays;importjava.util.stream.Collectors;publicclassMain{publicstaticvoidmain(String[]args){Scannerscanner=newScanner
http://www.jsqmd.com/news/455622/

相关文章:

  • Live2D模型资源解析技术全指南:从原理到实践的完整路径
  • 滚动轴承故障诊断实战:5分钟掌握4种特征频率计算公式(附Excel模板)
  • 亚洲美女-造相Z-Turbo入门必看:如何将生成图直接嵌入Notion/Airtable自动化工作流
  • 告别重复编码:快马AI自动生成Java基础开发高效工具模板
  • 颠覆式STM32开发:图形化编程如何革新嵌入式开发流程
  • 【仅限头部金融客户内部流出】MCP同步性能黄金参数表(覆盖K8s DaemonSet/边缘IoT/跨AZ三大部署拓扑)
  • Kafka Eagle 2.0.0保姆级安装指南:从解压到配置全流程详解
  • Mac/Win双平台保姆级教程:Android NDK r18b环境搭建全流程(含WSL配置)
  • 科研图表美化指南:R语言boxplot显著性标记的5个常见问题与解决方案
  • Spring Boot 缓存架构:一行配置切换 Caffeine 与 Redis,透明支持多租户隔离
  • Figma中文界面解决方案:提升设计效率的全流程指南
  • 告别月度账单惊吓!用VS Code插件实现MCP策略“编写即生效、提交即审计、推送即扣减”——已验证于日均2.4万容器集群
  • Live2D模型资源解析全流程实战指南:从原理到应用的深度探索
  • 解码器(Decoder)
  • AnimateDiff生成效果实测:看看这些文字描述能变成多美的视频
  • 3种突破:图形化编程重构STM32开发流程
  • ESP32-WROOM-32E + Node-RED实战:5分钟搞定物联网数据面板(附完整代码)
  • [特殊字符]️Qwen2.5-VL-7B-Instruct部署教程:Air-gapped离线环境全链路安装指南
  • QT自定义事件实战:从注册到处理的全流程指南(附多线程示例)
  • OpenWebUI+cpolar打造超顺手本地 AI 模型!
  • Keil5开发环境模拟:探讨嵌入式设备部署轻量级StructBERT的可行性
  • 开源技术赋能老旧设备:价值重构与效能优化全指南
  • 三菱PLC在智能停车场系统中的应用:毕业设计实战与避坑指南
  • 禁烟黑科技:如何用AI自动抓拍公共场所吸烟者?实测2108张标注数据效果
  • 效率翻倍:用快马一键生成集成winclaw的自动化处理脚本
  • Coze智能客服工作流实战:从架构设计到性能调优
  • 如何用pygrib解决气象数据处理中的GRIB格式解析难题
  • 告别手动配置:用快马ai一键生成带jdk环境的spring boot项目原型
  • ChatGPT生图技术解析:从原理到工程实践
  • Log4j2日志保留策略实战:如何设置1MB文件大小和7天自动清理