牛客 劍指Offer 21 棧的壓入 彈出序列

2021-09-23 01:57:31 字數 1007 閱讀 5267

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

本題的思路是建立乙個輔助棧,先挨個比較原先的序列(棧的壓入順序),再挨個比較輔助棧的序列。

# -*- coding:utf-8 -*-

class

solution

:def

__init__

(self)

: self.stack =

# 初始化輔助棧

defispoporder

(self, pushv, popv)

:# write code here

while pushv:

# 若棧的壓入序列不為空,則將壓入序列與彈出序列挨個比較

if pushv[0]

!= popv[0]

:# 若壓入序列的開頭與彈出序列的開頭不相等,則把壓入序列的開頭元素壓到輔助棧中,再比較壓入序列第二個元素與彈出序列0)

)else

:# 若壓入序列的開頭與彈出序列的開頭相等,則同時彈出

pushv.pop(0)

popv.pop(0)

while self.stack:

# 若輔助棧的元素不為空,則挨個將棧頂元素與彈出序列剩餘的開頭元素比較

if self.stack[-1

]== popv[0]

:# 若相等,則同時pop掉

self.stack.pop(

)== popv.pop(0)

else

:# 若不等,則不為壓入序列的彈出序列

return

false

return

true

# 若壓入序列與輔助棧的元素均為空,則輸出true

劍指offer 21 棧的壓入 彈出

1.題目描述輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列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就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 思路...

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

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