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

华为OD机试 - 消消乐能量碰撞(Java 新系统 100分)

华为OD机试 新系统 题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

在一个充满魔法能量的消除游戏中,一排排不同颜色的能量球(代表不同质量/能量值)静止在网格中。当玩家触发消除机制时,相邻的
能量球会发生相互碰撞。

消除规则:

碰撞机制:当两个相邻的能量球相遇时,系统会根据它们的能量值(质量)进行判断。

强弱判定:如果两个能量球的能量值不同,能量值较低的那个球会被对手的能量波吞噬,从而消除。

同归于尽:如果两个能量球的能量值完全相同,它们会引发剧烈的能量湮灭反应,导致两者同时被消除。

幸存条件:只有能量值足够高且未发生碰撞(或碰撞后存活)的能量球,才能留在场上继续等待下一轮消除。

题目目标:

给定一排初始的能量球序列,请模拟上述消除过程,找出最终留在场上的所有能量球及其顺序。

约束:

能量球的个数不超过 1000 个,能量球的能量值是非负整数,最大不超过 10000

二、输入描述

输入为一行字符串,格式为

n a1,a2,a3,...,an

其中 n 表示能量球的数量,方括号内为初始能量球序列的数值列表。

三、输出描述

输出最终留在场上的所有能量球序列,以数组形式表示,格式为 b1,b2,…,bm。

四、测试用例

测试用例1:

1、输入

5
3,5,5,2,3

2、输出

3

3、说明

3 留下

5 > 3,留下 5

5 == 5,两个都消除

2 留下

3 > 2,最终留下 3

测试用例2:

1、输入

6
1,2,2,1,3,4

2、输出

4

3、说明

1

2 > 1 → 2

2 == 2 → 全部消失

1

3 > 1 → 3

4 > 3 → 4

最终输出 4。

五、解题思路

处理每个新能量球 current 时,只需要关心当前场上是否存在一个幸存球 survivor:

当前没有幸存球:current 直接留下。

  • current == survivor:两个球同时消除,场上为空。
  • current > survivor:原幸存球被消除,current 成为新幸存球。
  • current < survivor:新球被消除,原幸存球继续存在。

为什么只保存一个变量就够?

因为每次新球与当前幸存球碰撞后,结果只可能是:

  1. 留下其中一个;
  2. 两个都消失。

因此任意时刻场上最多只有一个有效幸存球,没有必要使用栈、队列或数组保存中间状态。

六、Java算法源码

publicclassOdTest{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);// 输入既包含换行,也包含逗号,因此把“逗号或任意空白字符”都作为分隔符。// 例如:// 5// 3,5,5,2,3// 会依次读取出 5、3、5、5、2、3。scanner.useDelimiter("[,\\s]+");intn=scanner.nextInt();// hasSurvivor 表示当前场上是否存在幸存球。booleanhasSurvivor=false;// survivor 保存当前幸存球的能量值。intsurvivor=0;for(inti=0;i<n;i++){intcurrent=scanner.nextInt();if(!hasSurvivor){// 当前场上没有能量球,// 新进入的能量球直接成为当前幸存球。survivor=current;hasSurvivor=true;}elseif(current==survivor){// 两个相邻能量球能量完全相同,// 根据规则两者同归于尽,因此场上重新变为空。hasSurvivor=false;}elseif(current>survivor){// 新进入的能量球更强,// 原幸存球被消除,新球成为新的幸存球。survivor=current;}// 如果 current < survivor:// 新进入的球较弱,会被原幸存球消除。// survivor 不需要发生任何变化。}// 根据题目给出的样例格式,输出时不添加 []。// 如果全部能量球都被消除,则输出空行。if(hasSurvivor){System.out.println(survivor);}else{System.out.println();}scanner.close();}}

七、效果展示

1、输入

5
0,3,3,0,2

2、输出

2

3、说明

0 留下

3 > 0 → 留下 3

3 == 3 → 两个都消失

0 留下

2 > 0 → 留下 2

最终输出 2。


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 新系统 200分)

🏆本专栏收录于《华为OD机试(JAVA)真题》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

http://www.jsqmd.com/news/1391984/

相关文章:

  • Navigation2和TEB局部规划器调参问题及解决办法
  • springboot校园失物招领系统08239-计算机课程设计/毕业设计
  • Spring Boot 图书管理系统设计与实现|React + MySQL + 借阅、续借、归还与活动管理-----附源码76826
  • Android应用安装辅助工具,apk安装
  • 2026年南京企业家社群竞争力研判与选型指南 - 甄选测评馆
  • Kettle数据迁移实战:一次搞定从旧系统到新平台的完整避坑指南
  • Visual C++ Redistributable AIO 完整使用指南:一条命令终结 msvcp140.dll 缺失烦恼
  • 2026 红河州蒙自市具备相关资质的专业防水补漏门店有哪些? - 甄选测评馆
  • IDEA全局设置JDK、Maven、编码格式(转载)、moudle被ignore
  • 2026 北京消杀服务商合作指南:靶向防制体系、服务流程与选择建议 - 中国华商产业观察网
  • python 基础语法学习: 集合 (set) 方法汇总
  • 外贸建站公司哪家好?B2B询盘站、独立站和多语言官网服务商推荐
  • 【C++】记录size of std::vector的巧妙坑
  • 2026 年福州叉车吊车租赁,高空作业车吊装搬运服务问答 - LYL仔仔
  • 破解物理AI技术困局(49):TVA实现分层记忆索引
  • 【毕设作品】基于Django的智慧旅游数据分析平台的设计与实现
  • GetQzonehistory:不写一行代码,一次扫码把QQ空间历史说说永久备份回家
  • 移植Letter Shell到ThreadX
  • 《派出你的AI同事:WorkBuddy案例实战》056:商品文案批量生成与选品分析
  • 2026智能运维管理平台怎么选?4大核心维度拆解
  • 【关注可白嫖源码】--课程设计--+毕业设计+springboot某小区物业管理系统[编号:project88951](案例分析)
  • DDrawCompat 兼容性修复实战:一份 ddraw.dll 解决 DirectDraw 老游戏的三类现代系统问题
  • 【万能转换器|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
  • 2026 年至今,岳阳靠谱的高海拔干式变压器供应厂家竞争格局,山巅矗立的这玩意儿,居然比平原设备少费30%电?背后藏着行业大秘密 - 行业推荐官【认证】
  • Codex客户端第三方增强工具Codex++配置踩坑记录
  • 法学硕士论文降AI教程:法律专业研究生论文AIGC超标免费4.8元知网达标完整操作指南 - 还在做实验的师兄
  • 2026年抚顺防冻服选购盘点:澳丰防护及优质供应商梳理 - 小范同学a
  • 为什么济南企业的济南英文网站建设必须避开这三个坑?资深开发者带你从0到1打造国际化品牌
  • m4s文件打不开?1分钟免转码无损合并,B站缓存视频转MP4一步到位
  • 八大网盘直链下载一步到位:网盘直链下载助手的完整上手指南