劍指Offer刷題筆記 棧的壓入 彈出序列

2021-09-26 05:45:21 字數 869 閱讀 5636

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

第乙個序列表示棧的壓入順序,第乙個序列並不是代表乙個固定的棧,按第乙個序列的順序入棧,但是在入棧的同時有可能也有出棧的操作。同樣第二個棧代表出棧的順序,但是入棧和出棧是如何交替進行的並不知道。

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

class solution:

def ispoporder(self, pushv, popv):

# write code here

if len(popv) == 0 or len(pushv) != len(popv):

return false

# stackdata是模擬實際棧的狀態

stackdata =

for i in pushv:

# 如果i出棧之後一直在出棧,就pop所有的相等的元素

while len(stackdata) and stackdata[-1] == popv[0]:

stackdata.pop()

popv.pop(0)

# 如果stackdata[-1] != popv[0],說明現在沒有出棧的操作

# 繼續按順序入棧

# 如果兩個序列是匹配的,入棧的元素按照對應的出棧方式出棧

# 最後棧裡應該是空的

if len(stackdata):

return false

return true

劍指Offer 題22 棧的壓入 彈出序列

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

劍指Offer程式設計題 棧的壓入 彈出序列

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

劍指offer 棧的壓入 彈出序列

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。分析 用乙個輔助棧模擬壓入彈出操作,...