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入輔助棧,此時棧...