栈的压入 弹出队列

题目描述

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列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) {
        stack<int> stackV;
        int pushIndex = 0;
        int popIndex = 0;
        while(pushV[pushIndex] != popV[popIndex]) {
            stackV.push(pushV[pushIndex++]);
        }
        ++popIndex;
        ++pushIndex;
        while(popIndex < popV.size()) {
            if(popV[popIndex] == stackV.top()) {
                stackV.pop();
                ++popIndex;
            }
            else{
                stackV.push(pushV[pushIndex++]);
            }
            //++popIndex;
        }
        if(stackV.empty())
            return true;
        return false;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。...
    鸿雁长飞光不度阅读 735评论 0 0
  • 栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。...
    echoVic阅读 532评论 0 1
  • 题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均...
    BeijingIamback阅读 372评论 1 3
  • 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字...
    _minimal阅读 1,237评论 2 0
  • 三尺高强电网,隔开的是两个世界,今天有幸第一次走进监狱参观,我们一行31人列队进入,三监建于上世纪八十年代,据监狱...
    跳舞的萤火虫阅读 264评论 0 0