華為OD機試真題——最小的調整次數/特異性雙端隊列(2025B卷:100分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

在這里插入圖片描述

2025 B卷 100分 題型

本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析;
并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式!

2025華為OD真題目錄+全流程解析/備考攻略/經驗分享

華為OD機試真題《最小的調整次數/特異性雙端隊列》:


目錄

    • 題目名稱:最小的調整次數/特異性雙端隊列
      • 題目描述
    • Java
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
      • 綜合分析
    • python
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
      • 綜合分析
    • JavaScript
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
      • 綜合分析
    • C++
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
      • 綜合分析
    • C語言
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
      • 綜合分析
    • GO
      • 問題分析
      • 解題思路
      • 代碼實現
      • 代碼詳細解析
      • 示例測試
      • 綜合分析


題目名稱:最小的調整次數/特異性雙端隊列


屬性內容
知識點雙端隊列、邏輯處理
時間限制1秒
空間限制256MB
限定語言不限

題目描述

有一個特異性的雙端隊列,該隊列可以從頭部或尾部添加數據,但只能從頭部移出數據。小A依次執行2n個指令(n個添加操作和n個移除操作)。添加指令按順序插入1到n的數值(可能從頭部或尾部添加),移除指令要求按1到n的順序移出元素。在任何時刻可以調整隊列數據順序,求最少的調整次數以滿足移除順序要求。

輸入描述

  • 第一行輸入整數n(1 ≤ n ≤ 3×10?)。
  • 后續2n行包含n條添加指令(head add xtail add x)和n條remove指令。

輸出描述
輸出一個整數,表示最小調整次數。

示例
輸入:

5  
head add 1  
tail add 2  
remove  
head add 3  
tail add 4  
head add 5  
remove  
remove  
remove  
remove  

輸出:

1  

解釋:
移除順序需為1→2→3→4→5。在第7步移除時隊列頭部為2,需調整順序后移出,調整次數+1。


Java

問題分析

我們需要處理一個特異性的雙端隊列,每次添加元素可以選擇頭部或尾部,但只能從頭部移除元素。目標是按順序移除元素1到n,并在必要時調整隊列順序,求出最小的調整次數。

解題思路

  1. 維護連續區間:跟蹤當前連續的右邊界 currentMax,表示當前連續遞增序列的最大值。
  2. 添加操作處理:如果添加的元素是 currentMax + 1 且添加到尾部,擴展連續區間;否則標記隊列為無序。
  3. 移除操作處理:若隊列頭部是當前期望值 expected,直接移除;否則調整隊列,調整次數加一,并重置連續區間。

代碼實現

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();sc.nextLine();int expected = 1;int currentMax = 0;int adjusts = 0;boolean ordered = true;for (int i = 0; i < 2 * n; i++) {String line = sc.nextLine().trim();if (line.startsWith("remove")) {if (ordered && expected == currentMax) {expected++;currentMax = 0;} else {adjusts++;expected++;currentMax = 0;ordered = true;}} else {int x = Integer.parseInt(line.split(" ")[2]);if (ordered) {if (x == currentMax + 1) {currentMax = x;} else {ordered = false;currentMax = Math.max(currentMax, x);}} else {currentMax = Math.max(currentMax, x);}}}System.out.println(adjusts);}
}

代碼詳細解析

  1. 輸入處理:讀取n和后續的2n條指令。
  2. 變量初始化
    • expected:下一個需要移除的元素,初始為1。
    • currentMax:當前連續區間的最大值,初始為0。
    • adjusts:調整次數計數器。
    • ordered:標記隊列是否處于有序狀態。
  3. 處理每條指令
    • 移除指令
      • 若隊列有序且當前expected等于currentMax(即頭部為expected),則直接移除。
      • 否則調整次數加一,重置currentMax并標記隊列為有序。
    • 添加指令
      • 若隊列有序且新元素是currentMax + 1,擴展連續區間。
      • 否則標記隊列為無序,并更新currentMax

示例測試

示例輸入

5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove

輸出

1

解析:在第3步移除時隊列頭部不是1,調整次數加一。后續移除操作無需調整。

另一個測試用例

3
head add 3
tail add 1
remove
tail add 2
remove
remove

輸出

2

解析:第一次移除時隊列頭部是3≠1,調整一次;第二次移除時頭部是1≠2,調整第二次。

綜合分析

  1. 時間復雜度:O(n),每個指令處理時間為O(1)。
  2. 空間復雜度:O(1),僅維護幾個變量。
  3. 優勢:無需模擬隊列操作,直接通過邏輯判斷調整次數,高效處理大規模數據。
  4. 適用性:適用于任何n值,尤其適合高并發和大數據場景。

python

問題分析

我們需要處理一個特異性的雙端隊列,隊列可以從頭部或尾部添加元素,但只能從頭部移除元素。目標是按順序移除1到n的元素,并在必要時調整隊列順序,求出最小的調整次數。

解題思路

  1. 維護連續區間:跟蹤當前連續的右邊界 current_max,表示當前可連續移除的最大值。
  2. 全局最大值:維護 global_max 記錄所有已添加元素的最大值。
  3. 調整條件:當需要移除的元素 expected 超過 current_max 時,必須調整隊列,調整次數加一,并將 current_max 更新為 global_max

代碼實現

n = int(input())
expected = 1
current_max = 0

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

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

相關文章

2024年ESWA SCI1區TOP,自適應學習灰狼算法ALGWO+無線傳感器網絡覆蓋優化,深度解析+性能實測

目錄 1.端午快樂2.摘要3.灰狼算法GWO原理4.改進策略5.結果展示6.參考文獻7.代碼獲取8.讀者交流 1.端午快樂 今天端午節&#xff0c;祝各位朋友端午安康&#xff0c;闔家平安&#xff01; 2.摘要 無線傳感器網絡&#xff08;WSNs&#xff09;是一種被廣泛應用的新興技術&…

ADI硬件筆試面試題型解析下

本專欄預計更新60期左右。當前第17期-ADI硬件. ADI其硬件工程師崗位的招聘流程通常包括筆試和多輪技術面試,考察領域涵蓋模擬電路設計、數字電路、半導體器件和信號處理等。 本文通過分析平臺上的信息,匯總了ADI硬件工程師的典型筆試和面試題型,并提供詳細解析和備考建議,…

SpringCloud 分布式鎖Redisson鎖的重入性與看門狗機制 高并發 可重入

可重入 Redisson 的鎖支持 可重入性&#xff0c;這意味著同一個線程在獲取鎖后&#xff0c;如果再次嘗試獲取該鎖&#xff0c;它可以成功地獲得鎖&#xff0c;而不會被阻塞。 每次一個線程成功獲取鎖后&#xff0c;它的持有次數會增加。當線程再次獲取該鎖時&#xff0c;Redi…

Java 中 Redis 過期策略深度解析(含拓展-redis內存淘汰策略列舉)

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點睡覺 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 Java 中 Redis 過期策略深度解析一、Redis 過…

Flutter - 原生交互 - 相機Camera - 01

環境 Flutter 3.29 macOS Sequoia 15.4.1 Xcode 16.3 集成 Flutter提供了camera插件來拍照和錄視頻&#xff0c;它提供了一系列可用的相機&#xff0c;并使用特定的相機展示相機預覽、拍照、錄視頻。 添加依賴 camera: 提供使用設備相機模塊的工具path_provider: 尋找存儲圖…

基于 Amazon Q Developer CLI 和 Amazon Bedrock Knowledge Bases 實現智能問答系統

1. 引言 傳統企業通常將常見問題&#xff08;FAQ&#xff09;發布在網站上&#xff0c;方便客戶自助查找信息。然而&#xff0c;隨著生成式 AI 技術的迅速發展與商業滲透&#xff0c;這些企業正積極探索構建智能問答系統的新途徑。這類系統不僅能顯著提升客戶體驗&#xff0c;…

Go 為何天生適合云原生?

當前我們正處在 AI 時代&#xff0c;但是在基礎架構領域&#xff0c;仍然處在云原生時代。云原生仍然是當前時代的風口之一。作為一個 Go 開發者&#xff0c;職業進階的下一站就是學習云原生技術。作為 Go 開發者學習云原生技術有得天獨厚的優勢&#xff0c;這是因為 Go 天生適…

Mac查看MySQL版本的命令

通過 Homebrew 查看&#xff08;如果是用 Homebrew 安裝的&#xff09; brew info mysql 會顯示你安裝的版本、路徑等信息。 你的終端輸出顯示&#xff1a;你并沒有安裝 MySQL&#xff0c;只是查詢了 brew 中的 MySQL 安裝信息。我們一起來看下重點&#xff1a; &#x1f9fe…

Kafka ACK機制詳解:數據可靠性與性能的權衡之道

在分布式消息系統中&#xff0c;消息確認機制是保障數據可靠性的關鍵。Apache Kafka 通過 ACK&#xff08;Acknowledgment&#xff09;機制 實現了靈活的數據確認策略&#xff0c;允許用戶在 數據可靠性 和 系統性能 之間進行權衡。本文將深入解析 Kafka ACK 機制的工作原理、配…

FastMCP:構建 MCP 服務器和客戶端的高效 Python 框架

在人工智能領域&#xff0c;模型上下文協議&#xff08;Model Context Protocol&#xff0c;簡稱 MCP&#xff09;作為一種標準化的協議&#xff0c;為大型語言模型&#xff08;LLM&#xff09;提供了豐富的上下文和工具支持。而 FastMCP 作為構建 MCP 服務器和客戶端的 Python…

動態庫導出符號與extern “C“

1. windows下動態庫導出符號 根據C/C語法規則&#xff0c;函數聲明中的修飾符&#xff08;如__declspec(dllexport)&#xff09;可以放在返回類型之前或返回類型之后、函數名之前。這兩種方式在功能上是等價的&#xff0c;編譯器會以相同的方式處理。 __declspec(dllexport) …

Linux(9)——進程(控制篇——下)

目錄 三、進程等待 1&#xff09;進程等待的必要性 2&#xff09;獲取子進程的status 3&#xff09;進程的等待方法 wait方法 waitpid方法 多進程創建以及等待的代碼模型 非阻塞的輪訓檢測 四、進程程序替換 1&#xff09;替換原理 2&#xff09;替換函數 3&…

Datatable和實體集合互轉

1.使用已廢棄的 JavaScriptSerializer&#xff0c;且反序列化為弱類型 ArrayList。可用但不推薦。 using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Web; using Sy…

阿里云服務器ECS詳解:云服務器是什么,云服務器優勢和應用場景及參考

云服務器ECS是阿里云眾多云產品中&#xff0c;最受用戶關注的產品&#xff0c;阿里云服務器提供多樣化的計算能力&#xff0c;支持x86、Arm架構&#xff0c;涵蓋CPU、GPU等多種服務器類型&#xff0c;滿足各種用戶需求。其便捷易用特性包括分鐘級交付、通用API和性能監控框架&a…

【Oracle】游標

個人主頁&#xff1a;Guiat 歸屬專欄&#xff1a;Oracle 文章目錄 1. 游標基礎概述1.1 游標的概念與作用1.2 游標的生命周期1.3 游標的分類 2. 顯式游標2.1 顯式游標的基本語法2.1.1 聲明游標2.1.2 帶參數的游標 2.2 游標的基本操作2.2.1 完整的游標操作示例 2.3 游標屬性2.3.1…

pikachu靶場通關筆記11 XSS關卡07-XSS之關鍵字過濾繞過(三種方法滲透)

目錄 一、源碼分析 1、進入靶場 2、代碼審計 3、攻擊思路 二、滲透實戰 1、探測過濾信息 2、注入Payload1 3、注入Payload2 4、注入Payload3 本系列為通過《pikachu靶場通關筆記》的XSS關卡(共10關&#xff09;滲透集合&#xff0c;通過對XSS關卡源碼的代碼審計找到安…

XML 元素:基礎、應用與優化

XML 元素:基礎、應用與優化 引言 XML(可擴展標記語言)作為一種數據交換的標準格式,廣泛應用于互聯網數據交換、數據存儲等領域。XML 元素是 XML 文檔的核心組成部分,本文將深入探討 XML 元素的概念、特性、應用以及優化方法。 一、XML 元素概述 1.1 XML 元素的定義 X…

【Axure高保真原型】交通事故大屏可視化分析案例

今天和大家分享交通事故大屏可視化分析案例的原型模板&#xff0c;包括餅圖分類分析、動態顯示發生數、柱狀圖趨勢分析、中部地圖展示最新事故發現地點和其他信息、右側列表記錄發生事故的信息…… 通過多種可視化圖表展示分析結果&#xff0c;具體效果可以點擊下方視頻觀看或…

HCIP(BGP基礎)

一、BGP 基礎概念 1. 網絡分類與協議定位 IGP&#xff08;內部網關協議&#xff09;&#xff1a;用于自治系統&#xff08;AS&#xff09;內部路由&#xff0c;如 RIP、OSPF、EIGRP&#xff0c;關注選路效率、收斂速度和資源占用。EGP&#xff08;外部網關協議&#xff09;&a…

【HarmonyOS 5】 ArkUI-X開發中的常見問題及解決方案

一、跨平臺編譯與適配問題 1. 平臺特定API不兼容 ?問題現象?&#xff1a;使用Router模塊的replaceUrl或startAbility等鴻蒙專屬API時&#xff0c;編譯跨平臺工程報錯cant support crossplatform application。 ?解決方案?&#xff1a; 改用ohos.router的跨平臺封裝API&a…