华为OD机试真题——阿里巴巴找黄金宝箱 IV(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 200分 题型
本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析;
并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式!
2025华为OD真题目录+全流程解析/备考攻略/经验分享
华为OD机试真题《阿里巴巴找黄金宝箱 IV》:
目录
- 题目名称:阿里巴巴找黄金宝箱 IV
- 题目描述
- Java
- 题目分析
- 解决思路
- Java 代码实现
- 代码解析
- 示例测试
- 示例1:
- 示例2:
- 综合分析
- python
- 题目分析
- 解决思路
- Python 代码实现
- 代码解析
- 示例测试
- 示例1:
- 示例2:
- 综合分析
- JavaScript
- 题目分析
- 解决思路
- JavaScript 代码实现
- 代码解析
- 示例测试
- 示例1:
- 示例2:
- 综合分析
- C++
- 题目分析
- 解决思路
- C++ 代码实现
- 代码解析
- 示例测试
- 示例1:
- 示例2:
- 综合分析
- C语言
- 题目分析
- 解决思路
- C 代码实现
- 代码解析
- 1. 栈结构定义
- 2. 栈操作函数
- 3. 核心算法
- 4. 输入处理
- 示例测试
- 示例1:
- 示例2:
- 综合分析
- GO
- 题目分析
- 解决思路
- Go 代码实现
- 代码解析
- 示例测试
- 示例1:
- 示例2:
- 综合分析
题目名称:阿里巴巴找黄金宝箱 IV
知识点: 字符串、栈操作(单调栈算法)、逻辑处理
时间限制: 1秒
空间限制: 256MB
限定语言: 不限
题目描述
一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地。藏宝地有编号从0-N的箱子排列成环(编号最大的箱子的下一个是编号为0的箱子),每个箱子贴有一个数字。请输出每个箱子之后的第一个比它大的数字,若不存在则输出-1。
输入描述
输入一个数字子串,数字之间用逗号分隔,例如:1,2,3,1
。
- 1 ≤ 子串中数字个数 ≤ 10000
- -100000 ≤ 每个数字值 ≤ 100000
输出描述
结果以逗号分隔,例如:2,3,6,-1,6
。
测试用例
- 输入:
1,2,3,4,5
→ 输出:2,3,4,5,-1
- 输入:
2,5,2
→ 输出:5,-1,5
(需循环搜索)
Java
题目分析
我们需要在给定的环形数组中,为每个元素找到其后第一个更大的元素。环形数组意味着最后一个元素的下一个元素是第一个元素。例如,输入 2,5,2
中,第三个元素的下一个元素是第一个元素,但第一个更大的元素是第二个元素 5。
解决思路
单调栈算法:
- 遍历两次数组:模拟环形结构,每个元素会被处理两次。
- 维护单调递减栈:栈中保存元素索引,确保栈顶元素对应的值是递减的。
- 处理每个元素:当当前元素比栈顶元素大时,栈顶元素的下一个更大元素即为当前元素,记录结果并出栈。
Java 代码实现
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();String[] parts = input.split(",");int[] nums = new int[parts.length];for (int i = 0; i < parts.length; i++) {nums[i] = Integer.parseInt(parts[i]);}int[] result = nextGreaterElements(nums);System.out.println(arrayToString(result));}private static int[] nextGreaterElements(int[] nums) {int n = nums.length;int[] res = new int[n];Arrays.fill(res, -1);Deque<Integer> stack = new ArrayDeque<>();// 遍历两次数组,模拟环形结构for (int i = 0; i < 2 * n; i++) {int num = nums[i % n];// 维护单调递减栈,处理栈顶元素while (!stack.isEmpty() && num > nums[stack.peek()]) {int index = stack.pop();res[index] = num;}// 只在第一次遍历时压入索引if (i < n) {stack.push(i);}}return res;}private static String arrayToString(int[] arr) {StringBuilder sb = new StringBuilder();for (int i = 0; i < arr.length; i++) {if (i > 0) {sb.append(",");}sb.append(arr[i]);}return sb.toString();}
}
代码解析
-
输入处理:
String input = scanner.nextLine(); String[] parts = input.split(","); int[] nums = new int[parts.length]; for (int i = 0; i < parts.length; i++) {nums[i] = Integer.parseInt(parts[i]); }
- 读取输入字符串并分割为整数数组。
-
核心算法
nextGreaterElements
:int[] res = new int[n]; Arrays.fill(res, -1); Deque<Integer> stack = new ArrayDeque<>();
- 初始化结果数组
res
,默认值为 -1。 - 使用双端队列
Deque
作为栈,保存索引。
- 初始化结果数组
-
遍历两次数组:
for (int i = 0; i < 2 * n; i++) {int num = nums[i % n];while (!stack.isEmpty() && num > nums[stack.peek()]) {int index = stack.pop();res[index] = num;}if (i < n) {stack.push(i);} }
- 遍历逻辑:遍历
2n
次,i % n
模拟环形访问。 - 维护栈:栈中保存未找到更大元素的索引,确保栈中元素对应的值是递减的。
- 处理栈顶元素:当当前元素
num
大于栈顶元素对应的值时,栈顶元素的下一个更大元素即为num
,记录结果并出栈。 - 压入索引:仅在第一次遍历时压入索引,避免重复处理。
- 遍历逻辑:遍历
-
结果转换:
private static String arrayToString(int[] arr) {// 将数组转换为逗号分隔的字符串 }
- 将结果数组转换为题目要求的输出格式。
示例测试
示例1:
输入:
1,2,3,4,5
输出:
2,3,4,5,-1
解析:
- 每个元素的下一个更大元素依次为后一个元素,最后一个元素无更大值。
示例2:
输入:
2,5,2
相关文章:

华为OD机试真题——阿里巴巴找黄金宝箱 IV(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《阿里巴巴找黄金宝箱 IV》:…...

数据结构:时间复杂度(Time Complexity)和空间复杂度(Space Complexity)
目录 什么是时间复杂度? 如何表示时间复杂度? 为什么需要时间复杂度? 用几个例子理解 怎么分析代码的时间复杂度? 什么是空间复杂度? 举例理解 什么是时间复杂度? 时间复杂度是用来衡量一个算法“…...
CentOS7.9环境离线部署docker和docker-compose的两种方式
目 录 一、yum安装,使用rpm安装包和相关依赖 1.1 准备rpm安装包 1.2 将docker-23.0.4.tar.gz上传至/opt目录下 二、二进制文件方式安装 三、安装docker-compose 一、yum安装,使用rpm安装包和相关依赖 1.1 准备rpm安装包 1)在一台与…...
北京大学肖臻老师《区块链技术与应用》公开课:06-BTC-网络
文章目录 比特币工作在应用层,它的底层是一个P2P overlay Network...

SSL/TLS 协议详解:安全通信的基石
一、概述 SSL(Secure Sockets Layer) 及其继任者 TLS(Transport Layer Security) 是位于 传输层(TCP)与应用层之间 的加密协议,用于在网络通信中实现 机密性、身份认证和数据完整性。 核心目标…...

设计模式——外观设计模式(结构型)
摘要 本文介绍了外观设计模式,它是一种结构型设计模式,通过引入一个外观类来封装复杂子系统的调用细节,对外提供简单统一的接口。文中通过生活类比、关键角色介绍、使用场景分析以及结构说明等方面对这一模式进行了全面阐述,还涉…...

Linux `vi/vim` 编辑器深度解析与高阶应用指南
Linux `vi/vim` 编辑器深度解析与高阶应用指南 一、核心功能解析1. 模式系统2. 与主流编辑器对比二、核心操作体系1. 高效导航命令2. 文本操作矩阵三、高阶配置体系1. .vimrc 配置示例2. 插件管理系统四、企业级开发实践1. 代码编辑技巧2. 宏录制与批量处理五、可视化与多窗口1…...

ES中must与filter的区别
在 Elasticsearch 的布尔查询(bool query)中,must 和 filter 是两个核心子句,它们的核心区别在于 是否影响相关性评分,这直接决定了它们在查询性能、使用场景和结果排序上的差异。以下是详细对比: 一、核心…...

qt之开发大恒usb3.0相机三
上一篇大恒相机的开发 是基于Qt Creator msvc工具链编译的,大恒相机msvc使用的的lib库是c版的。如果想要使用mingw工具链开发大恒相机,那么找连接对相应的lib库。mingw对应的库是c的。 配置如下: 图像获取核心代码如下 void __stdcall Wid…...

Transformer架构详解:从Attention到ChatGPT
Transformer架构详解:从Attention到ChatGPT 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 Transformer架构详解:从Attention到ChatGPT摘要引言一、Attention机制:Transformer的…...

数据中台(大数据平台)之数据安全管理
数据安全管理是结合大数据技术和行业特性,数据中台产品应具备数据分类分级、敏感数据智能识别的功能,并结合敏感数据管理、数据脱敏、数据加密等安全管控方式,保障数据安全可用。 1.安全分级分类:数据分级分类是一种将不同数据按…...

github双重验证密码忘记或者获取不了了怎么办
背景 近期由于换了新手机,之前配置好的Authenticator这个App无法使用,导致获取不到二次验证的Authenticator code,登陆不上GitHub,不知道有没有人和我遇到同样的问题? 当我们配置2FA双重验证后,每次登陆gi…...

告别复杂操作!电脑极简风格计时使用
无论是工作、学习还是日常生活,这款小巧实用的计时工具都能成为你掌控时间的好帮手。特别适合需要频繁切换正计时、倒计时和查看当前时间的场景。界面简洁,操作便捷,助你高效管理每一刻。 这是一款免安装的工具,下载后可直接打开…...
stm32cube ide如何将工具链替换成arm-none-eabi-gcc
在 STM32Cube IDE 中替换工具链为GNU Arm Embedded Toolchain (arm-none-eabi-gcc),可按以下步骤操作: 1. 检查是否已安装工具链 首先确认系统中是否已安装 arm-none-eabi-gcc: Windows:检查环境变量 PATH 中是否包含工具链路径…...

[STM32问题解决(2)]STM32通过串口与PC通信,打开串口助手后无法在打开状态下下载程序和复位STM32
问题回顾 最近学习STM32单片机,经常使用STM32通过USART1串口与PC的串口助手进行通信。为了简单便捷,通常在打开串口的状态下下载程序。这样子下载程序后,STM32发出的信号,PC马上可以收到。 但是,突然出现了一个问题&a…...
RabbitMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 选型指南(二)
四、三者性能大比拼 4.1 吞吐量 吞吐量是衡量消息队列处理能力的重要指标,它反映了在单位时间内消息队列能够处理的消息数量。在这方面,Kafka 表现最为出色,其独特的设计使其能够轻松处理每秒数百万条消息 。Kafka 采用分布式架构和分区机制…...

OpenHarmony定制系统组合按键(一)
一、开发环境 系统版本:OpenHarmony 4.0.10.13 设备平台:rk3568 SDK版本:fullSDK 4.0.10.13 DevEco Studio版本:4.1.0.400 二、需求背景 定制OpenHarmony 系统组合按键功能,例如仿Android Power VOL_Up组合键实现截…...
ORDER BY子句在一个 SQL 查询中只能出现一次
order by A.create_time,A.update_time desc和 order by A.create_time desc,A.update_time desc有区别吗? 关键区别 第一个排序中 create_time 是升序(默认是ASC),第二个是降序(DESC) 只有在 DESC 关键字紧跟在列名后面时,该列才会按降序排…...

Spring Boot 3 整合 MQ 构建聊天消息存储系统
引子 在构建实时聊天服务时,我们既要保证消息的即时传递,又需要对消息进行持久化存储以便查询历史记录。然而,直接同步写入数据库在高并发场景下容易成为性能瓶颈,影响消息的实时性。秉承"没有什么问题是加一层解决不了的&q…...
DeepSeek实战:打造智能数据分析与可视化系统
DeepSeek实战:打造智能数据分析与可视化系统 1. 数据智能时代:DeepSeek数据分析系统入门 在数据驱动的决策时代,智能数据分析系统正成为企业核心竞争力。本节将使用DeepSeek构建一个从数据清洗到可视化分析的全流程智能系统。 1.1 系统核心功能架构 class DataAnalysisS…...

非线性声学计算与强化学习融合框架:突破复杂环境人机交互的新技术
随着人工智能的快速发展,尤其是在深度学习和强化学习领域,声学计算和人机交互进入前所未有的扩展和创新阶段。尽管传统声学方法取得了显著成功,但这些线性或准线性方法在实际环境中往往存在关键的不足,尤其在动态、复杂或混响环境…...

C++ - STL #什么是STL #STL的版本 #闭源开源 #STL的六大组件
文章目录 前言 一、什么是STL 二、STL的版本 1、原始版本 2、P.J.版本 3、RW版本 4、SGI版本 三、闭源、开源 四、STL的六大组件 总结 前言 路漫漫其修远兮,吾将上下而求索; 一、什么是STL STL(standard template libaray 标准模板库)&#…...

Flutter - 原生交互 - 相机Camera - 01
环境 Flutter 3.29 macOS Sequoia 15.4.1 Xcode 16.3 集成 Flutter提供了camera插件来拍照和录视频,它提供了一系列可用的相机,并使用特定的相机展示相机预览、拍照、录视频。 添加依赖 camera: 提供使用设备相机模块的工具path_provider: 寻找存储图…...

湖北理元理律师事务所:个人债务管理的温度与精度
湖北理元理律师事务所:个人债务管理的温度与精度 面对信用卡、网贷、医疗债等多重债务压力,普通人常陷入“拆东墙补西墙”的恶性循环。湖北理元理律师事务所通过计划集团公司服务平台,推出“有温度的债务优化计划”,其人性化设计…...

Compose原理 - 整体架构与主流程
一、整体架构 在官方文档中(Jetpack Compose 架构层 | Android Developers),对Compose的分层有所阐述: 其中 Runtime:提供Compose的基础运行能力,包括State、Side-effects、CompositionLocal、Compositio…...
从0开始学vue:实现一个简单页面
Vue.js 是一个渐进式JavaScript框架,用于构建用户界面。下面我将带你从零开始学习Vue.js并创建一个简单的可运行页面。 1. 准备工作 首先,你需要了解几种学习Vue.js的方式: 方式一:使用CDN引入(最简单的方式&#x…...
在机器视觉测量和机器视觉定位中,棋盘格标定如何影响精度
棋盘格标定是机器视觉(尤其是基于相机的系统)中进行相机内参(焦距、主点、畸变系数)和外参(相机相对于世界坐标系的位置和姿态)标定的经典且广泛应用的方法。它的质量直接、显著且多方面地影响最终的视觉测量和定位精度。 以下是棋盘格标定如何影响精度的详细分析: 标定…...

CppCon 2014 学习: C++ Test-driven Development
“Elephant in the Room”这个比喻常用来形容那些大家都知道但没人愿意讨论的重大问题。 这段内容讲的是软件质量管理的经典做法和潜在的问题: 经典做法:开发完成后才进行人工测试(manual testing after creation)。隐喻“Cape o…...

RAGflow详解及实战指南
目录 前言 一、RAGflow核心技术解析 1. 技术原理:检索与生成的协同进化 2. 架构设计:分层模块化与高扩展性 3. 核心优势:精准、高效、安全 二、RAGflow实战应用场景 1. 企业知识库搭建 2. 智能客服系统 3. 投资分析报告生成 4. 制造…...
JWT 不对外,Session ID 对外:构建安全可控的微服务认证架构
以下是一篇围绕“JWT不对外,Session ID对外”的专业架构设计文章,适用于技术团队评审、技术博客发布或系统设计文档引用: JWT 不对外,Session ID 对外:构建安全可控的微服务认证架构 在构建分布式微服务系统时&#x…...