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...