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

2021-09-08 17:39:17 字數 569 閱讀 9009

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

模擬入棧與出棧的過程。1.將pushv中的第乙個元素壓入;2.在pushv中所有元素的入棧過程中,結合popv中元素判定它們是否發生出棧情況:沒有元素出棧則繼續壓入pushv中下乙個元素;有元素出棧則將該元素彈出,並繼續檢測popv中下乙個元素;3.檢驗popv剩餘元素是否滿足棧s中元素的出棧順序;

class solution //兩個佇列長度不相等

if(n==0) //兩個佇列長度相等且都為0,我覺得這種情況返回true

stacks;

int index1=0,index2=0; //兩個索引指向兩個vector

s.push(pushv[index1++]); //壓入第乙個元素後索引index1指向第二個元素

while(index1

推薦大家看lizo的題解

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

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

劍指Offer 31 棧的壓入 彈出序列

題目輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。leetcode中也有相同的題目 驗證棧序列 解決思路 依次將第乙個序列的元素壓入棧中 判斷這個元素是不是第二個序列中的將要pop的值 如果是則從棧中彈出此元素,將要pop的值的後移...

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

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