剑指 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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章