輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列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就不可能是該壓棧序列的彈出序列。分析 用乙個輔助棧模擬壓入彈出操作,...