華為OD機試真題——洞穴探險(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳實現

在這里插入圖片描述

2025 A卷 200分 題型

本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式;
并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析;
本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分享》

華為OD機試真題《洞穴探險》:


文章快捷目錄

題目描述及說明

Java

python

JavaScript

C

GO


題目名稱:洞穴探險


  1. 知識點:字符串處理、正則匹配(或棧操作)、邏輯判斷
  2. 時間限制:1秒
  3. 空間限制:256MB
  4. 限定語言:不限

題目描述

某探險隊負責對地下洞穴進行探險。探險隊成員在進行探險任務時,隨身攜帶的記錄器會不定期地記錄自身的坐標,但在記錄的間隙中也會記錄其他數據。探索工作結束后,探險隊需要獲取到某成員在探險過程中相對于探險隊總部的最遠足跡位置。

坐標規則

  1. 坐標格式為 (x,y),例如 (1,2)(100,200),其中 0 < x < 10000 < y < 1000
  2. 非法坐標包括以下情況:
    • 數字前導零(如 (01,1)(1,01));
    • 坐標值為0或超出范圍(如 (0,100))。

距離計算

  • 總部坐標為 (0,0),某位置 (x,y) 的相對距離為 ( x^2 + y^2 )。
  • 若兩個坐標距離相同,則以第一次出現的坐標為準。
  • 若所有坐標均非法,輸出 (0,0)

輸入描述
一行字符串,表示記錄儀中的數據(可能包含非坐標字符)。例如:

ferga13fdsf3(100,200)f2r3rfasf(300,400)  

輸出描述
最遠足跡坐標,如:

(300,400)  

示例

  • 輸入:ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)
    輸出:(5,10)(合法坐標中距離最大)
  • 輸入:asfefaweawfaw(0,1)fe
    輸出:(0,0)(坐標非法)

備注
無需處理嵌套括號(如 sfsdfsd((1,2)))。


Java

問題分析

題目要求從輸入字符串中提取所有合法的坐標,并找到距離總部(0,0)最遠的坐標。若所有坐標均非法,則返回(0,0)。合法坐標需滿足以下條件:

  1. 格式為(x,y),其中x和y為數字且無前導零(除非數字本身為0,但x和y必須大于0且小于1000)。
  2. 0 < x < 1000,0 < y < 1000。

解題思路

  1. 正則匹配:使用正則表達式提取所有可能的坐標。
  2. 合法性驗證
    • 檢查x和y是否有前導零。
    • 檢查x和y的數值范圍是否合法。
  3. 計算距離:對合法坐標計算其到總部(0,0)的歐氏距離平方(x2 + y2),記錄最大距離對應的坐標。
  4. 處理邊界:若無合法坐標,返回(0,0)。

代碼實現

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();scanner.close();Pattern pattern = Pattern.compile("\\((\\d+),(\\d+)\\)"); // 匹配(x,y)格式Matcher matcher = pattern.matcher(input);int maxDistance = -1;String maxCoordinate = null;while (matcher.find()) {String xStr = matcher.group(1); // 提取x部分字符串String yStr = matcher.group(2); // 提取y部分字符串// 檢查前導零:若長度>1,則首字符不能為0boolean xValid = (xStr.length() == 1) || (xStr.length() > 1 && xStr.charAt(0) != '0');boolean yValid = (yStr.length() == 1) || (yStr.length() > 1 && yStr.charAt(0) != '0');if (!xValid || !yValid) {continue;}// 轉換為整數并驗證范圍int x = Integer.parseInt(xStr);int y = Integer.parseInt(yStr);if (x <= 0 || x >= 1000 || y <= 0 || y >= 1000) {continue; // 數值非法}// 計算距離int distance = x * x + y * y;if (distance > maxDistance) {maxDistance = distance;maxCoordinate = "(" + x + "," + y + ")"; // 更新最大坐標}}System.out.println(maxCoordinate != null ? maxCoordinate : "(0,0)");}
}

代碼解析

  1. 正則匹配Pattern.compile("\\((\\d+),(\\d+)\\)") 匹配形如(x,y)的字符串,其中\\d+表示一個或多個數字。
  2. 提取坐標matcher.find()循環遍歷所有匹配的坐標,group(1)group(2)分別提取x和y的字符串形式。
  3. 前導零檢查:若x或y的字符串長度大于1且首字符為0,視為非法。
  4. 數值范圍檢查:將x和y轉換為整數后,檢查是否滿足0 < x < 1000和0 < y < 1000。
  5. 距離計算:對合法坐標計算x2 + y2,并更新最大距離及對應坐標。
  6. 結果輸出:若無合法坐標,輸出(0,0),否則輸出最大距離對應的坐標。

示例測試

  1. 輸入ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)
    輸出(5,10)
    解釋:合法坐標有(3,10)、(3,4)、(5,10),最大距離為52 + 102 = 125。

  2. 輸入asfefaweawfaw(0,1)fe
    輸出(0,0)
    解釋:坐標(0,1)中x=0非法,無合法坐標。

  3. 輸入(01,2)(100,02)(100,999)
    輸出(100,999)
    解釋:前兩個坐標因前導零或數值非法被過濾,第三個坐標合法且距離最大。

綜合分析

  1. 時間復雜度:O(n),其中n為輸入字符串長度。正則匹配和遍歷均為線性復雜度。
  2. 空間復雜度:O(1),僅需存儲臨時變量。
  3. 優勢
    • 高效性:正則表達式快速定位坐標,避免逐字符遍歷。
    • 魯棒性:嚴格校驗前導零和數值范圍,確保合法坐標正確性。
  4. 適用性:完美處理題目約束條件,適用于大范圍輸入數據。

python

問題分析

題目要求從輸入字符串中提取所有合法的坐標,并找到距離總部(0,0)最遠的坐標。若所有坐標均非法,則返回(0,0)。合法坐標需滿足以下條件:

  1. 格式為(x,y),其中x和y為數字且無前導零(除非數字本身為0,但x和y必須大于0且小于1000)。
  2. 0 < x < 1000,0 < y < 1000。

解題思路

  1. 正則匹配:使用正則表達式提取所有可能的坐標。
  2. 合法性驗證
    • 檢查x和y是否有前導零。
    • 檢查x和y的數值范圍是否合法。
  3. 計算距離:對合法坐標計算其到總部(0,0)的歐氏距離平方(x2 + y2),記錄最大距離對應的坐標。
  4. 處理邊界:若無合法坐標,返回(0,0)。

代碼實現

import redef find_farthest_coordinate(input_str):max_distance = -1max_coord = Nonepattern = re.compile(r'\((\d+),(\d+)\)')  # 正則匹配坐標格式for match

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81538.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81538.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java設計模式之職責鏈模式詳解

Java設計模式之職責鏈模式詳解 一、職責鏈模式核心思想 核心目標&#xff1a;將請求的發送者與接收者解耦&#xff0c;使多個對象都有機會處理請求。這些處理者形成鏈式結構&#xff0c;請求沿鏈傳遞直到被處理或到達鏈尾&#xff0c;如政府審批層層上報機制。 二、職責鏈模式…

解決WPF短暫的白色閃爍(白色閃屏)

在 WPF 應用程序啟動時出現 短暫的白色閃爍&#xff08;白色閃屏&#xff09;&#xff0c;通常是由于以下原因導致的&#xff1a; 主要原因 WPF 默認窗口背景是白色&#xff0c;在加載 UI 之前會短暫顯示白色背景。 解決方案 設置窗口背景為透明或黑色&#xff08;推薦&…

《Python基礎》第1期:人生苦短,我用Python

介紹 Python 在英語中是蟒蛇的意思&#xff0c;它的 logo 也是兩條蟒蛇纏繞在一起。 然而 Python 和蟒蛇實際上沒有半點關系。 Python 是由荷蘭程序員 Guido van Rossum&#xff08;因為其名字的前三個字母“gui”是中文“龜”的拼音&#xff0c;所以江湖人稱“龜叔”&#x…

DiT、 U-Net 與自回歸模型的優勢

DiT 相對于 U-Net 的優勢 全局自注意力 vs. 局部卷積 U-Net 依賴卷積和池化/上采樣來逐層擴大感受野&#xff0c;捕捉全局信息需要堆疊很多層或借助跳躍連接&#xff08;skip connections&#xff09;。DiT 在每個分辨率階段都用 Transformer 模塊&#xff08;多頭自注意力 ML…

怎么查找idea插件的下載位置,并更改

長期使用 IntelliJ IDEA 時&#xff0c;默認存儲在 C 盤的配置文件會持續生成大量緩存和日志文件&#xff0c;可能導致系統盤空間不足。通過修改默認配置文件存儲位置&#xff0c;可以有效釋放 C 盤空間并提升系統性能。 1&#xff0c;先找到自己idea的下載目錄&#xff0c;再打…

IoT/HCIP實驗-1/物聯網開發平臺實驗Part2(HCIP-IoT實驗手冊版)

文章目錄 概述產品和設備實例的產品和設備產品和設備的關聯單個產品有多個設備為產品創建多個設備產品模型和物模型設備影子&#xff08;遠程代理&#xff09; 新建產品模型定義編解碼插件開發編解碼插件工作原理消息類型與二進制碼流添加消息&#xff08;數據上報消息&#xf…

15.進程間通信(一)

一、進程間通信介紹 進程間通信目的&#xff1a; 數據傳輸&#xff1a;一個進程需要將它的數據發送給另?個進程 資源共享&#xff1a;多個進程之間共享同樣的資源。 通知事件&#xff1a;一個進程需要向另一個或一組進程發送消息&#xff0c;通知它&#xff08;它們&#xf…

05-jenkins學習之旅-vue前項目部署實踐

1、創建被管理項目 2、構建流程說明 jenkins其實就是將服務部署拆分成了&#xff1a; 1、拉取代碼(git) 2、打包編譯(npm install) 3、自定義腳本(dist復制、執行啟動腳本) 4、部署成功后的一些通知等 3、demo配置 3.1、General 3.2 源碼管理 添加用戶名密碼方式如下圖 3.2…

服務器中分布式存儲數據技術都包含哪些內容?

隨著大數據時代的到來&#xff0c;企業和組織對于服務器的存儲要求也在不斷地增高&#xff0c;傳統的存儲架構已經無法滿足一些大規模的數據存儲和處理需求&#xff0c;分布式存儲技術應運而生&#xff0c;成為了大數據存儲的重要基礎設施&#xff0c;下面&#xff0c;就來介紹…

從比分滾動到數據革命:體育數據如何重構我們的觀賽體驗?

當凌晨三點的歐冠決賽與鬧鐘沖突時&#xff0c;當世界杯小組賽因時差難以全程跟進時&#xff0c;當代體育迷早已不再依賴電視直播 —— 打開手機里的比分網&#xff0c;實時跳動的體育大數據正構建著全新的觀賽宇宙。這些曾經被視為 "輔助工具" 的平臺&#xff0c;如…

vue2使用element中多選組件el-checkbox-group,數據與UI更新不同步

問題描述 使用element多選checkbox組件&#xff0c;點擊勾選取消勾選&#xff0c;視圖未變化&#xff0c;再次點擊表單其他元素&#xff0c;多選組件勾選狀態發生變化&#xff0c;視圖和數據未同步 第一次嘗試&#xff1a;再el-checkbox-group多選父組件上增加點擊事件&…

CodeTop之LRU緩存

題目鏈接 146. LRU 緩存 - 力扣&#xff08;LeetCode&#xff09; 題目解析 算法原理 我們使用雙向鏈表哈希表的形式來模擬緩存機制 首先我們要自己實現一個雙鏈表, 自己寫一個內部類, 這個內部類記錄了key,value,prev,next(前驅和后繼), 后續我們就通過這個內部類來構造雙…

PyQt學習系列11-綜合項目:多語言文件管理器

PyQt學習系列筆記&#xff08;Python Qt框架&#xff09; 第十一課&#xff1a;綜合項目 - 多語言文件管理器 &#xff08;原課程規劃中的第十五課&#xff0c;按用戶要求調整為第十一課&#xff09; 課程目標 綜合運用PyQt框架開發一個支持多語言的文件管理器實現以下核心功…

【Ubuntu修改串口延時(Latency Timer)為1毫秒(設備拔插或系統重啟后自動生效)】

Ubuntu修改串口延時Latency Timer為1毫秒-設備拔插或系統重啟后自動生效 在Ubuntu系統中&#xff0c;串口設備的延時參數(latency_timer)可以通過udev規則永久修改。以下是完整步驟&#xff1a; 創建udev規則文件 sudo vim /etc/udev/rules.d/99-ftdi-low-latency.rules添加以…

OpenCV CUDA模塊圖像處理------顏色空間處理之GPU 上交換圖像的通道順序函數swapChannels()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于在 GPU 上交換圖像的通道順序&#xff08;例如將 BGR 圖像轉為 RGB&#xff09;。 它適用于多通道圖像&#xff08;如 3 通道或 4 通道…

Linux Ubuntu24.04配置安裝MySQL8.4.5高可用集群主從復制!

MySQL 主從復制&#xff08;Replication&#xff09;是實現數據高可用、讀寫分離及異地容災的核心機制之一。主庫寫、從庫讀&#xff0c;提升并發能力&#xff1b;讀寫分離&#xff0c;減輕主庫壓力。 本地 windows 系統有一個Linux Ubuntu子系統&#xff0c;版本為Ubuntu 24.…

R基于邏輯回歸模型實現心臟病檢測及SHAP值解釋項目實戰

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔視頻講解&#xff09;&#xff0c;如需數據代碼文檔視頻講解可以直接到文章最后關注獲取。 1.項目背景 心血管疾病是全球范圍內導致死亡的主要原因之一&#xff0c;每年有數百萬人因此失去生命。在眾多的…

嵌入式學習筆記 -函數嵌套時以及異常響應時,LR使用的具體過程

函數嵌套時以及異常響應時&#xff0c;寄存器LR的作用存在顯著區別&#xff0c;理解這個問題對于理解freeRTOS底層代碼的實現大有幫助&#xff0c;具體使用過程如下&#xff1a; 一 函數嵌套時的LR使用的具體過程 在ARM架構(特別是M0處理器)中&#xff0c;函數嵌套調用時LR(L…

Java String函數的使用

文章目錄 String字符串比較字符串查找轉化字符串替換字符串拆分字符串截取&#xff08;常用&#xff09;字符串的不可變性 String str本來是字符串常量的引用&#xff0c;應該打印地址&#xff0c;但是編譯器重寫了toString方法&#xff0c;所以打印hello String 的構造方法 …

Oracle 11G RAC重啟系統異常

vmware安裝centos7環境部署Oracle RAC (11.2.0.4) 部署時所有資源情況都是正常的&#xff0c;關機重啟虛擬機后集群資源狀態異常&#xff0c;請教CSDN大佬 – 部署規劃 域名地址備注rac16192.168.31.16rac17192.168.31.17rac16vip192.168.31.26viprac17vip192.168.31.27vip…