棧的壓入彈出序列

2021-09-26 20:33:26 字數 758 閱讀 6632

title: 2019-8-18 棧的壓入彈出序列

tags: 演算法,每日一題,棧

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

題目的意思是假如我現在要將1,2,3,4,5依次壓入棧中,但是在壓入的過程中我可以彈出棧中的元素。例如:現在棧中有1,2,3三個元素,在壓入4之前我們先將3彈出那麼彈出序列中的第乙個元素就是3.這個地方其實衍生出了另外一道題,就是給定乙個入棧順序,求所有可能的出棧順序數。這個的結論是乙個卡特蘭數 f(n

)=c(

2n,n

)/(n

+1

)f(n) = c(2n,n)/(n+1)

f(n)=c

(2n,

n)/(

n+1)

.2.1 解題思路

首先入棧順序是知道的,因此借助乙個輔助棧乙個乙個將入棧序列壓入棧,每次壓入乙個數,都比較輔助棧頂的元素是否和出棧序列中的第乙個元素相同,如果相同說明這時從棧中彈出了乙個資料。那麼彈出序列向後移動乙個。重複這個過程直到遍歷完整個壓入序列。最後如果輔助棧為空說明壓入序列與彈出序列匹配。

class solution 

}return help_stack.empty();

}};

棧的壓入彈出序列

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

棧的壓入 彈出序列

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

棧的壓入彈出序列

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