華為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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82645.shtml
英文地址,請注明出處:http://en.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;…