zoukankan      html  css  js  c++  java
  • 栈的压入、弹出序列

    题目描述

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
    思路:借助模拟栈,将压入数组依次压入,当栈顶元素=弹出顺序时弹出,出栈一个元素则出栈序列Id+1,重复上句过程,最后判断栈中是否有元素即答案。
    代码:
        bool IsPopOrder(vector<int> pushV,vector<int> popV) {
            stack<int> sta;
            int length = pushV.size();
            int id = 0;
            for(int i = 0; i < length; i++)
            {
                sta.push(pushV[i]);
                while(!sta.empty() && sta.top() == popV[id])
                {
                    sta.pop();
                    id++;
                }
            }
            return sta.empty();
        }
  • 相关阅读:
    自动化测试
    django
    Linux软件推荐
    deepin升级20.1(2021.3)
    struts_自定义日期类型转换器
    struts_01
    JAVA面向对象思想
    springmvc 文件上传
    ajax+struts2 实现省份-城市-地区三级联动
    mybatis——分页插件
  • 原文地址:https://www.cnblogs.com/Lune-Qiu/p/9097514.html
Copyright © 2011-2022 走看看