美文网首页剑指offer刷题
栈的压入、弹出序列

栈的压入、弹出序列

作者: 侯俊同学 | 来源:发表于2019-05-29 22:19 被阅读0次

    题目描述

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)

    题解

    class Solution {
    public:
        bool IsPopOrder(vector<int> pushV,vector<int> popV) {
            if(pushV.size()!=popV.size())
                return false;
            int j = 0;
            stack<int> aux;
            for(int idx = 0; idx < pushV.size();++idx){
                aux.push(pushV[idx]);
                while(!aux.empty() && popV[j]==aux.top())
                {
                    j++;
                    aux.pop();
                }
            }
            return aux.empty();
    }
    

    相关文章

      网友评论

        本文标题:栈的压入、弹出序列

        本文链接:https://www.haomeiwen.com/subject/vezutctx.html