劍指offer 面試題 32 棧的壓入 彈出序列

2021-09-21 02:12:14 字數 664 閱讀 1880

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。

假設壓入棧的所有數字均不相等。

例如序列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]

輸出:true

空間複雜度 o(n),時間複雜度分析:一共push n次,pop n次。

用乙個輔助棧s來模擬實時進出棧操作:

每push乙個數字進棧,就檢查棧頂元素有沒有和彈出序列當前遍歷的元素能pop出來的。

如果最後s為空,說明一進一出剛剛好。

class solution 

}if(!s.empty())

return false;

else

return true;

}};

劍指offer 面試題22 棧的壓入 彈出序列

題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設入棧的所有數字均不相等。思路 用乙個棧來模擬入棧過程。如果彈出序列的元素a不等於棧頂,那麼說明它還沒有入棧,從壓入順序裡將元素a以及它之前的元素全部入棧。如果所有壓入順序中的元素都已入棧還是沒有在棧頂找到元...

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

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

劍指offer面試題22 棧的壓入 彈出序列

題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。思路 遍歷第二個序列,如果下乙個彈出的數字剛好是棧頂數字,則直接彈出。如果不在棧頂,把壓棧序列中還沒有入棧的陣列壓入輔助棧,直到把下乙個需要彈出的數字壓入棧頂為止。如果所有的數字都壓入棧了仍然沒有找到下乙個彈出...