微軟,Google面試題 (24) —— 棧的push、pop序列

題目:輸入兩個整數序列。其中一個序列表示棧的push順序,判斷另一個序列有沒有可能是對應的pop順序。爲了簡單起見,我們假設push序列的任意兩個整數都是不相等的。
例一:push序列爲12345,pop序列爲45321
解法一:設計一個輔助棧。第一個pop的爲4,將push序列中4之前所有元素push進棧。然後將4 push再pop。第二個爲5,此時棧頂元素爲3。繼續遍歷push序列,將5之前的所有元素
push,然後將5 push再pop。下一個pop的喂3,剛好是棧頂。這樣直到把所有元素都pop。
例二:push序列爲12345,pop序列爲42531
在pop完4之後,棧頂爲3。所以繼續遍歷push,但是在4之後找不到值爲2的元素。所以該序列不是pop序列。
如果給定的是pop序列,需要判斷的是push序列,過程一樣。

發佈了103 篇原創文章 · 獲贊 3 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章