Leetcode-每日一題【劍指 Offer 31. 棧的壓入、彈出序列】

題目

輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對應的一個彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。

示例 1:

輸入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
輸出:true
解釋:我們可以按以下順序執行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1

示例 2:

輸入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
輸出:false
解釋:1 不能在 2 之前彈出。

提示:

  1. 0 <= pushed.length == popped.length <= 1000
  2. 0 <= pushed[i], popped[i] < 1000
  3. pushed?是?popped?的排列。

解題思路

1.題目要求我們判斷棧的彈出順序是否是所給兩個整數序列,對于這道題我們需要設置一個輔助棧來幫助我們。還需要一個變量k來指向我們的出棧元素,方便我們讀取。

2.舉個例子:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]

我們先按入棧順序入棧第一個元素1

??

然后判斷stack當前的棧頂元素是否等于k指向的出棧順序的元素,若不等于我們就繼續入棧

?再次判斷stack當前的棧頂元素是否等于k指向的出棧順序的元素,不等于我們繼續入棧

?stack當前的棧頂元素依舊不等于k指向的出棧順序的元素,我們繼續入棧

??此時我們可以看到?stack當前的棧頂元素等于k指向的出棧順序的元素,我們就將Stack的棧頂元素出棧,并將 k 后移。

這時?stack當前的棧頂元素不等于k指向的出棧順序的元素,我們繼續按照入棧順序繼續入棧

再次將?stack當前的棧頂元素與k指向的出棧順序的元素進行判斷,發現兩者相等,我們就將棧頂元素進行出棧,并且將k后移

出棧

?

出棧

?

出棧

?

此時我們發現stack棧空了,那就證明所給的出棧順序是正確的。

3.本體的主要思想就是,我們需要查看棧頂元素是否與出棧順序所對應的元素相等,若相等就出棧,若不等就繼續按照入棧順序入棧,如果所有的操作結束后棧為空,就證明所給順序正確,否則就代表所給順序有誤。?

代碼實現

class Solution {public boolean validateStackSequences(int[] pushed, int[] popped) {//判斷所給序列是否為空if(pushed == null || pushed.length == 0){return true;}//設置一個輔助棧Stack<Integer> stack = new Stack();int k = 0;for(int i = 0; i < pushed.length; i++){stack.push(pushed[i]);while(!stack.isEmpty() && stack.peek() == popped[k]){stack.pop();k++;} }return stack.isEmpty();}
}

測試結果

?

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

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

相關文章

在SAP上使用 LiquidUI Android 掃描條形碼/QR 碼

LiquidUI Android 可使用安卓移動設備的內置攝像頭掃描條形碼和二維碼&#xff0c;為輸入框填充數值。因此&#xff0c;無需附加任何第三方設備進行掃描。 LiquidUI Android 還提供了掃描功能&#xff0c;如 Accessible-Enter&#xff08;俗稱自動輸入&#xff09;和 Accessib…

kotlin + LiveData 測試

viewModel測試&#xff1a;https://developer.android.com/codelabs/basic-android-kotlin-compose-test-viewmodel#3 androidTestImplementation "org.jetbrains.kotlin:kotlin-test:1.9.0"androidTestImplementation org.jetbrains.kotlinx:kotlinx-coroutines-tes…

基于粒子群改進深度信念網絡的回歸分析,基于PSO-DBN的回歸分析

目錄 背影 DBN神經網絡的原理 DBN神經網絡的定義 受限玻爾茲曼機(RBM) 粒子群算法的原理 DBN的粒子群改進深度信念網絡的回歸分析 基本結構 主要參數 數據 MATALB代碼 結果圖 展望 背影 DBN是一種深度學習神經網絡,擁有提取特征,非監督學習的能力,是一種非常好的分類算…

介紹一些操作系統— CentOS 系統

介紹一些操作系統— CentOS 系統 CentOS 系統 CentOS 是 Linux 發行版之一&#xff0c;是免費的、開源的、可以重新分發的開源操作系統。 CentOS Linux發行版是一個穩定的&#xff0c;可預測的&#xff0c;可管理的和可復現的平臺&#xff0c;源于 Red Hat Enterprise Linux…

SAP MM學習筆記22- 購買發注的項目種類(明細Category)

SAP中控制購買流程的是購買發注頁面中購買發注明細行的項目種類&#xff08;明細Category&#xff09;欄目。 ?項目種類&#xff08;明細Category&#xff09;有&#xff1a; 1&#xff0c; 標準 2&#xff0c;K 受托品 3&#xff0c;L 外注 4&#xff0c;S 仕入先直送…

Keepalived+http高可用實戰

環境準備&#xff1a; 兩臺安裝了keepalived的服務器 ip&#xff1a;192.168.134.170;192.168.134.172 1、安裝http服務 yum install httpd -y2、寫一個測試頁面 [rootlocalhost ~]# echo "hostname -I,web1 test page. " > /var/www/html/inde [rootlocalho…

Linux下搭建java環境

文章目錄 一&#xff0c;xshell鏈接linux二&#xff0c;linux安裝jdk環境 一&#xff0c;xshell鏈接linux 這里用到的工具,VMware搭配CentOS7 64位Xshell5 操作之前確保,傳輸Xshell連接了虛擬機 打開Xshell,文件->新建 主機ip—>進入虛擬機,右鍵打開終端,輸入命令:ifco…

centos 安裝 virtualbox

參考 https://phoenixnap.com/kb/how-to-install-virtualbox-centos-7 遇到 Gpg Keys Failue 這樣解決 將 rpm 包下載到本地 –disablerepovirtualbox sudo yum --disablerepovirtualbox localinstall VirtualBox-7.0-7.0.10_158379_el7-1.x86_64 failure: repodata/repomd…

STC單片機掉電(停機)模式介紹和使用

STC單片機掉電(停機)模式介紹和使用 ?在STC8/12/15單片機中都包含有掉電(省電模式)。 ??掉電模式/停機模式 ??STC12/15/8通用。??將寄存器PCON的.1Bit位置為1(PCON |=0x02),單片機將進入掉電模式,(掉電模式也叫停機模式)進入掉電模式后,內部時鐘停振,由于無時鐘…

適用于物聯網 (IoT)的遠距離、低功耗、低速率WiFi—Wi-Fi HaLow

1. Wi-Fi 簡介 Wi-Fi&#xff08;Wireless Fidelity&#xff09;是目前較為常見的無線通信方式&#xff0c;承載著一半以上的互聯網流量。Wi-Fi是一個總稱&#xff0c;涵蓋了802.11通信協議系列&#xff0c;由Wi-Fi聯盟持有并推動其發展。802.11通信協議發展至今已逾二十年&am…

【Stable Diffusion】雨天、濕身

一、Models 1.1、Wet Clothes (Clothing Style) [LoHA] WECL SEE-THROUGH WET WET HAIR BIKINI OR SWIMSUIT UNDER CLOTHES NO BRA BRA VISIBLE THROUGH CLOTHES MISC SHIRTS MISC CLOTHES1.2、Rain 雨 Multiply Style rain style1.3、Wet T-Shirt LORA <lora:wetshirt:…

為什么要做數據可視化系統

數據可視化系統在當今數字時代發揮著重要的作用&#xff0c;成為許多組織和企業的不可或缺的工具。隨著信息爆炸式增長和數據處理的需求不斷增加&#xff0c;數據可視化系統幫助人們更好地理解和分析數據&#xff0c;為決策提供重要支持。數聚股份將詳細介紹為什么要做數據可視…

【日常積累】Linux下文件亂碼問題

linux下刪除亂碼文件、目錄 由于編碼原因&#xff0c;在linux服務器上上傳、創建中文文件或目錄時&#xff0c;會產生亂碼&#xff0c;如果想刪除它&#xff0c;有時候發現用rm命令是刪除不了的 這種情況下&#xff0c;用find命令可以刪除亂碼的文件或目錄。 首先進入亂碼文件…

QT:自定義控件(Connect使用,子控件連接)

自定義控件封裝&#xff1a; 1.添加新文件&#xff08;設計師界面類&#xff09;&#xff0c;創建子頁面 &#xff0c;放自己想要的控件 2.在主頁面中使用子控件 :新建一個widget-![在這里插入圖片描述](https://img-blog.csdnimg.cn/95ed8015343e4c56a3914853950eff4c.png#pi…

Spring Boot | 使用mkcert本地生成SSL證書配置后端接口為HTTPS協議

Tips&#xff1a;本篇博客是 Windows 版本的使用教程&#xff0c;cmd 中執行的命令前綴是下載的軟件名稱&#xff0c;需要改成自己下載軟件的名稱&#xff01; 下載軟件 首先去 GitHub 倉庫中下載軟件&#xff0c;下載完成后將文件保存在英文路徑下的文件夾&#xff0c;之后以…

喜報!誠恒科技與賽時達科技達成BI金蝶云星空項目合作

隨著全球數字化浪潮轟轟烈烈襲來&#xff0c;僅僅憑借手工處理的方式難以在龐大的數據海洋中精準獲取信息、把握市場需求、了解目標用戶&#xff0c;為企業創新提供強有力的支持。深圳賽時達科技有限公司&#xff08;簡稱賽時達科技&#xff09;希望通過數字化轉型實現從手工處…

未來混合動力汽車的發展:技術探索與前景展望

隨著環境保護意識的增強和對能源消耗的關注&#xff0c;混合動力汽車成為了汽車行業的研發熱點。混合動力汽車融合了傳統燃油動力和電力動力系統&#xff0c;通過優化能源利用效率&#xff0c;既降低了燃油消耗和排放&#xff0c;又提供了更長的續航里程。本文將探討混合動力汽…

【Linux】應用層之HTTP協議

HTTP協議 應用層協議應用層的作用&#xff1a;為應用程序提供網絡服務序列化的意義、為什么要將數據序列化&#xff1f;HTTP協議概述HTTP的協議格式請求響應GET方法和POST方法的出現的場景和區別&#xff1f; 應用層協議 在應用層&#xff0c;需要我們傳遞應用層所需特殊的數據…

Python數學函數、字符串和對象

學習目標&#xff1a; 使用math模塊中的函數解決數學問題表示和處理字符串和字符使用ASCII和Unicode對字符編碼使用ord函數獲取一個字符的數值編碼以及使用chr函數將一個數值編碼轉換成一個字符使用轉義序列表示特殊字符調用帶參數end的print函數使用str函數將數字轉換成字符串…

Python的getattr方法

getattr是Python中的內置函數&#xff0c;用于獲取一個對象的屬性值。這個函數是動態獲取屬性的一種方式&#xff0c;特別適用于你事先不知道要獲取哪個屬性&#xff0c;或者屬性名是在運行時確定的情況。 使用方法&#xff1a; getattr(object, name, [default])object: 要從…