演算法題 棧的壓入,彈出序列

2021-08-08 17:19:49 字數 863 閱讀 3588

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

思路:

pushv:[1,2,3,4,5]

popv:[4,5,3,2,1]

temp:用來存放pushv壓入的數

判斷方法:pushv不斷的pop(0),將資料壓入temp,如果temp[-1]和popv不相等,則popv不變,若相等,則將popv.pop(0)刪除,將temp的最後乙個元素刪除。。。。。。

#coding:utf-8

class

solution:

defispoporder

(self, pushv, popv):

if len(pushv) == 0:

return

false

self.temp = [pushv.pop(0)]

while(len(popv)):

if self.temp[-1] == popv[0]:

self.temp.pop()

popv.pop(0)

elif len(pushv):

else:

return

false

return

true

if __name__ == '__main__':

s = solution()

print(s.ispoporder([1,2,3,4,5],[4,5,3,2,1]))

刷題 棧的壓入 彈出序列

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

棧的壓入彈出序列

題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列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...