劍指offer 21 棧的壓入 彈出

2021-09-24 21:59:59 字數 646 閱讀 7375

1.題目描述

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

2.解題思路

依次入棧pusha陣列中的數,直到pusha[i] =popa[index],此時將棧頂這個相等的值彈出。

判斷棧中是否還有值,如果沒有返回true,如果有並且index!=popa.length,依次彈出棧中數值,並與popa[index++]比較,兩個不相等返回false,到棧為空時沒執行false則返回true

3.**

public

boolean

ispoporder

(int

pusha,

int[

] popa)

a.pop();

}}//棧中還有值,index還沒到達popa尾部,依次彈出與popa比較

while

(!a.

isempty()

)}return

true

;}

《劍指offer》21 棧的壓入 彈出序列

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

劍指offer 21棧的壓入 彈出序列

題目描述 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度...

劍指Offer21 棧的壓入 彈出序列

思路 利用輔助棧來實現。先將pushv中元素壓入stack,然後判斷stack 1 和popv 0 是否相等,若相等則彈出,然後繼續判斷是否相等。當所有的元素全部壓入棧之後,stack的長度不等於0,則popv不是彈出序列。舉例 入棧1,2,3,4,5 出棧4,5,3,2,1 首先1入輔助棧,此時棧...