日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

【LeetCode笔记】剑指 Offer 31. 栈的压入、弹出序列 (Java、栈)

發(fā)布時間:2024/7/23 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode笔记】剑指 Offer 31. 栈的压入、弹出序列 (Java、栈) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 題目描述
  • 代碼 && 思路
      • 二刷

題目描述

打卡第三天!加油加油~

  • 數(shù)據(jù)結(jié)構(gòu)筆試題貌似也會考= =,不過考法不一樣,有點規(guī)律。
  • 總的來說還是挺有意思的,我們直接來看代碼吧~

代碼 && 思路

  • O(n) && O(n),依靠棧來實現(xiàn)
  • 思路:棧循環(huán)裝入元素,如果當(dāng)前裝入元素正好匹配彈出元素,就進行一個彈出循環(huán)
  • 注意~要加入一個 isEmpty() 進行短路判斷噢,避免空棧pop報錯
class Solution {public boolean validateStackSequences(int[] pushed, int[] popped) {int len = pushed.length;Stack<Integer> stack = new Stack<>();int i = 0, j = 0;for(; i < len; i++) {stack.push(pushed[i]);// 每次push后,循環(huán)跑一次 popedwhile(!stack.isEmpty() && stack.peek() == popped[j]) {stack.pop();j++;}}// j 能跑完則說明可行return j == len;} }

二刷

  • 核心思路:每次都塞進一個。每塞進一個,就開個循環(huán),能彈出多少就彈出多少。
class Solution {public boolean validateStackSequences(int[] pushed, int[] popped) {Deque<Integer> stack = new ArrayDeque<>();int popIndex = 0;for(int i = 0; i < pushed.length; i++) {stack.push(pushed[i]);while(!stack.isEmpty() && stack.element() == popped[popIndex]) {stack.pop();popIndex++;}}return popIndex == popped.length;} }

總結(jié)

以上是生活随笔為你收集整理的【LeetCode笔记】剑指 Offer 31. 栈的压入、弹出序列 (Java、栈)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。