华为OD机试真题——荒岛求生(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

在这里插入图片描述

2025 B卷 200分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《荒岛求生》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C

GO

更多内容


题目名称:荒岛求生


  • 知识点:栈操作(贪心算法)、逻辑处理
  • 时间限制:1秒
  • 空间限制:256MB
  • 限定语言:不限

题目描述

一个荒岛上有若干人,岛上只有一条路通往岛屿两端的港口(左港口和右港口)。所有人以相同速度逃生,方向分为向左(负数)或向右(正数),其绝对值表示体力值。若两人相遇(即一个向右的人与一个向左的人路径重叠),则进行决斗:

  • 体力值大的一方存活,但体力值减少对方体力值的绝对值;
  • 若体力值相同,则同归于尽(双方均淘汰)。
    最终存活的人可从两端港口逃生,求逃生总人数。

输入描述
一行非零整数,用空格分隔,正数表示向右逃生,负数表示向左逃生。数组长度不超过30000。

输出描述
一个整数,表示最终逃生人数。

示例
输入:5 10 8 -8 -5
输出:2
说明:

  • 8-8同归于尽;
  • 10击败-5后剩余体力5
  • 最终存活[5, 5],均从右港口逃生,输出2

Java

问题分析

人们在一个荒岛逃生,方向分为左右(正负),体力值由绝对值表示。当两人相遇(向右遇到向左)时,体力大者存活但减少对方体力值,相等则同归于尽。最终存活的人从两端港口逃生,求总人数。


解题思路

  1. 栈处理向右的人:向右的人压入栈,向左的人与栈顶决斗。
  2. 决斗规则
    • 栈顶体力大:栈顶减少对方体力,存活。
    • 相等:栈顶弹出,同归于尽。
    • 栈顶体力小:弹出栈顶,继续与下一个栈顶决斗。
  3. 存活统计:栈内剩余为右港口逃生人数,未击败的向左人数为左港口逃生人数。

代码实现

import java.util.ArrayDeque;
import java.util.Deque;public class Main {public static void main(String[] args) {// 示例测试int[] example1 = {5, 10, 8, -8, -5};System.out.println(escapeCount(example1)); // 输出2int[] example2 = {3, -5};System.out.println(escapeCount(example2)); // 输出1int[] example3 = {-3, -4, 2};System.out.println(escapeCount(example3)); // 输出2}public static int escapeCount(int[] people) {Deque<Integer> stack = new ArrayDeque<>(); // 保存向右逃生的人int leftSurvivors = 0; // 左港口逃生人数for (int num : people) {if (num > 0) {stack.push(num); // 向右的人直接入栈} else {int k = -num; // 当前向左逃生者的体力while (k > 0) {if (stack.isEmpty()) {leftSurvivors++; // 栈空则左港口存活+1break;}int t = stack.pop(); // 取出栈顶向右的人if (t > k) {stack.push(t - k); // 栈顶体力减少k,存活k = 0; // 当前向左者被击败} else if (t == k) {k = 0; // 同归于尽} else {k -= t; // 继续与下一个栈顶决斗}}}}return stack.size() + leftSurvivors;}
}

代码详解

  1. 栈初始化Deque<Integer> stack保存向右逃生的人。
  2. 遍历处理每个人
    • 向右的人:直接压入栈。
    • 向左的人
      • k为体力绝对值,循环处理栈顶元素。
      • 栈空则左港口存活+1。
      • 栈顶大于k:栈顶存活,体力减少k
      • 栈顶等于k:同归于尽。
      • 栈顶小于k:继续处理下一个栈顶。
  3. 返回结果:栈的大小(右港口)加左港口存活人数。

示例测试

  1. 示例1[5,10,8,-8,-5]

    • 8-8同归于尽,10击败-5变为5
    • 右港口存活[5,5],输出2
  2. 示例2[3,-5]

    • 3-5击败,左港口存活1,输出1
  3. 示例3[-3,-4,2]

    • -3-4左港口存活,2右港口存活,输出3

综合分析

  1. 时间复杂度:O(N),每个元素最多入栈和出栈一次。
  2. 空间复杂度:O(N),栈空间最坏保存所有向右的人。
  3. 正确性
    • 栈处理保证所有相遇的向右和向左的人正确决斗。
    • 左港口存活人数统计未被击败的向左者。
  4. 适用性:高效处理大规模数据(3万元素)。

python

问题分析

人们在荒岛上逃生,方向分为左右(正数为右,负数为左),体力值为绝对值。相遇时决斗规则:体力大者存活并减少对方体力值,相等则同归于尽。求最终存活人数。


解题思路

  1. 栈处理向右的人:向右的人存入栈中。
  2. 处理向左的人:向左的人依次与栈顶元素决斗,直到击败对方或栈空。
  3. 存活统计:栈内剩余为右港口逃生者,未被击败的向左人数为左港口逃生者。

代码实现

def escape_count(people):stack = []  # 保存向右逃生的人left_survivors = 0

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

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

相关文章

centos7安装MySQL(保姆级教学)

在 Linux 系统的软件管理中&#xff0c;YUM&#xff08;Yellowdog Updater, Modified&#xff09;包管理器是不可或缺的工具&#xff0c;而 YUM 源的选择与配置直接影响着软件安装与更新的效率。本文将深入解析网络 YUM 源的分类&#xff0c;详细介绍如何使用知名平台提供的 YU…

DeepSeek 赋能教育游戏化:AI 重构学习体验的技术密码

目录 一、引言&#xff1a;教育游戏化与 DeepSeek 的相遇二、DeepSeek 技术剖析2.1 核心架构2.2 关键技术 三、教育游戏化设计的奥秘3.1 概念与意义3.2 常见方法与元素3.3 成功案例借鉴 四、DeepSeek 在教育游戏化设计中的多面应用4.1 个性化学习路径打造4.2 智能教学辅助工具4…

WPF命令与MVVM模式:打造优雅的应用程序架构

🎮 打造优雅的应用程序架构 1. 🧩 命令系统基础1.1 🤔 为什么需要命令?1.2 🏗️ ICommand接口1.3 🛠️ 实现基本命令2. 🏛️ MVVM模式详解2.1 🧱 MVVM三大组件2.2 🏗️ 创建ViewModel基类2.3 🎯 典型ViewModel示例3. 🧩 命令绑定实战3.1 🎨 View中的命令…

真实案例拆解:智能AI客服系统中的两类缓存协同

真实案例拆解:智能客服系统中的两类缓存协同 在AI客服系统中,“响应速度”与“语义准确性”是一对天然的矛盾体。为了实现秒级应答与智能理解的双重目标,系统需要在技术架构中融合精确命中的缓存系统(如Redis)与模糊语义识别的向量数据库(如Milvus)。这两种能力的结合,…

FastAPI与MongoDB分片集群:异步数据路由与聚合优化

title: FastAPI与MongoDB分片集群:异步数据路由与聚合优化 date: 2025/05/26 16:04:31 updated: 2025/05/26 16:04:31 author: cmdragon excerpt: FastAPI与MongoDB分片集群集成实战探讨了分片集群的核心概念、Motor驱动配置技巧、分片数据路由策略、聚合管道高级应用、分片…

一起学数据结构和算法(三)| 字符串(线性结构)

字符串&#xff08;String&#xff09; 字符串是由字符组成的有限序列&#xff0c;在计算机中通常以字符数组形式存储&#xff0c;支持拼接、查找、替换等操作。 简介 字符串是计算机科学中最常用的数据类型之一&#xff0c;由一系列字符组成的有限序列。在大多数编程语言中&…

2025电工杯数学建模竞赛A题 光伏电站发电功率日前预测问题 保姆级教程讲解|模型讲解

完整内容请看文章最下面的推广群 2025电工杯数学建模竞赛 A题保姆级分析完整思路代码数据教学 2025电工杯 A题保姆级教程思路分析 DS数模-全国大学生电工数学建模&#xff08;电工杯&#xff09; A题保姆级教程思路分析 A题&#xff1a;光伏电站发电功率日前预测问题 下面我…

React Native 拼音及拼音首字母搜索组件开发

写在前面 “用户说找不到联系人&#xff1f;拼音搜索功能必须安排上&#xff01;” —— 当产品经理第N次提出这个需求时&#xff0c;我意识到需要开发一个强大的拼音搜索组件。本文将详细介绍如何开发一个支持拼音匹配、首字母搜索的React Native搜索组件&#xff0c;让你的应…

springboot--实战--大事件--用户接口开发

开发模式&环境搭建 开发模式&#xff1a; 前后端分离开发 前端程序员写前端页面&#xff0c;后端程序员写后端的接口&#xff0c;前端工程发送请求来访问后台&#xff0c;后台处理完请求后要给前端相应对应的数据。 还需要一套标准来约束即接口文档&#xff0c;在接口文…

html使用JS实现账号密码登录的简单案例

目录 案例需求 思路 错误案例及问题 修改思路 案例提供 所需要的组件 <input>标签&#xff0c;<button>标签&#xff0c;<script>标签 详情使用参考&#xff1a;HTML 教程 | 菜鸟教程 案例需求 编写一个程序&#xff0c;最多允许用户尝试登录 3 次。…

小米玄戒O1架构深度解析(一):十核异构设计与缓存层次详解

前言 这两天&#xff0c;小米的全新SOC玄戒O1横空出世&#xff0c;引发了科技数码圈的一次小地震&#xff0c;那么小米的这颗所谓的自研SOC&#xff0c;内部究竟有着什么不为人知的秘密呢&#xff1f;我们一起一探究竟。 目录 前言1 架构总览1.1 基本构成1.2 SLC缺席的原因探…

VSCode如何像Pycharm一样“““回车快速生成函数注释文档?如何设置文档的样式?autoDocstring如何设置自定义模板?

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 让VSCode拥有PyCharm级注释生成能力 📒🚀 实现方案🛠️ 备用方案📒 自定义注释文档格式样式 📒🔄 切换主流注释风格✨ 深度自定义模板🛠️ 类型提示与注释联动优化⚓️ 相关链接 ⚓️📖 介绍 📖 用PyCharm写P…

数据库的事务(Transaction)

在数据库中&#xff0c;事务&#xff08;Transaction&#xff09; 是保证数据操作一致性和完整性的核心机制。它通过一组原子性的操作单元&#xff0c;确保所有操作要么全部成功&#xff08;提交&#xff09;&#xff0c;要么全部失败&#xff08;回滚&#xff09;。以下是数据…

2025-05-27 Python深度学习7——损失函数和反向传播

文章目录 1 损失函数1.1 L1Loss1.2 MSELoss1.3 CrossEntropyLoss 2 反向传播 本文环境&#xff1a; Pycharm 2025.1Python 3.12.9Pytorch 2.6.0cu124 1 损失函数 ​ 损失函数 (loss function) 是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的"风险&…

python+tkinter实现GUI界面调用即梦AI文生图片API接口

背景 目前字节跳动公司提供了即梦AI的接口免费试用&#xff0c;但是并发量只有1&#xff0c;不过足够我们使用了。我这里想做个使用pythontkinter实现的GUI可视化界面客户端&#xff0c;这样就不用每次都登录官方网站去进行文生图片&#xff0c;当然文生视频&#xff0c;或者图…

#git 储藏库意外被清空 Error: bad index – Fatal: index file corrupt

问题&#xff1a;通常是由于 Git 的索引文件损坏导致 原因&#xff1a;系统崩溃或断电、硬盘故障、Git 操作错误等 方案&#xff1a;重建索引文件&#xff1a;将当前的索引文件重命名为其他名称或删除&#xff0c;比如 index.m&#xff0c;然后命令行重建索引&#xff0c;git…

GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【二】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

车载网关策略 --- 车载网关通信故障处理机制深度解析

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

Unity数字人开发笔记

开源工程地址&#xff1a;https://github.com/zhangliwei7758/unity-AI-Chat-Toolkit 先致敬zhangliwei7758&#xff0c;开放这个源码 一、建立工程 建立Unity工程&#xff08;UnityAiChat&#xff09;拖入Unity-AI-Chat-Toolkit.unitypackage打开chatSample工程&#xff0c;可…

Cherry Studio连接配置MCP服务器

之前写了一篇关于Cherry Studio的文章&#xff0c;不了解的可以先看一下 AI工具——Cherry Studio&#xff0c;搭建满血DeepSeek R1的AI对话客户端【硅基流动DeepSeek API】-CSDN博客 最近Cherry Studio更新了一个新功能&#xff1a;MCP服务器 在 v1.2.9 版本中&#xff0c;…