劍指 Offer 31. 棧的壓入、彈出序列

2020-06-28

1.題目描述

輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否爲該棧的彈出順序。假設
壓入棧的所有數字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧
序列對應的一個彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。

2.題解

對於pushed的每一個元素先入棧,如果棧頂元素始終和poped的元素相等的話,則一直出棧即可

3.代碼

class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        int len=pushed.size();
        if (!len) return true;
        stack<int> mystack;
        int j=0;
        for (int i=0;i<len;i++){
            mystack.push(pushed[i]);
            while (!mystack.empty()&&mystack.top()==popped[j]){
                mystack.pop();
                j++;
            }
        }
        if (j==len) return true;
        return false;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章