題目:輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)
思路:因為彈出之前的值都會先入棧,所以借助輔助棧來實現。
1.用指標i指向pushv的第乙個位置, 指標j指向popv的第乙個位置。
2.如果pushv[i] != popv[j], 那麼應該將pushv[i]放入輔助棧中,++i。
3.否則,pushv[i]popv[j], 說明這個元素是放入棧中立馬彈出,所以,++i, ++j,然後應該檢查popv[j]與棧頂元素是否相等,如果相等,++j, 並且彈出棧頂元素。
4.如果ipushv.size(), 說明入棧序列訪問完,此時檢查棧是否為空,如果為空,說明匹配,否則不匹配。
**實現:
class
solution
else}}
return tt.
empty()
;}};
C 棧的壓入 彈出序列
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出序列。假設壓入棧的所有數字均不相等。例如 序列是某棧的壓棧序列,序列是該壓棧序列對應的乙個彈出序列,但就不可能是該壓棧序列的彈出序列。解決該問題需要借助乙個輔助棧,把輸入的第乙個序列中的數字依次入棧,並按照第二個序列的順序...
棧的壓入 彈出序列 c
棧的壓入 彈出序列 題目描述 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列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就不可能是該壓棧序列的彈出序列。解答 可以用乙個輔助的棧來儲存入...