• 检验入栈序列、出栈序列是否合法


    题目:元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。 

    思路:借用一个辅助栈,先按照入栈顺序push,直到栈顶元素和出栈序列相等就pop,以此类推,最后栈为空且两个序列都被遍历到。

    bool Ispoporder(vector<int>&PushV,vector<int>&PopV)
    {
        stack<int> s;
        int lpush=PushV.size(),lpop=PopV.size();
        if(PushV.empty() || PopV.empty() || lpush!=lpop)
            return false;
        int j=0;
        for(int i=0;i<lpush;i++)
        {
            while(!s.empty() && s.top()==PopV[j])
            {
                s.pop();
                j++;
            }
            s.push(PushV[i]);
        }
        if(j<lpop)
        {
            while(!s.empty() && s.top()==PopV[j])
            {
                s.pop();
                j++;
            }
        }
        if(s.empty())
            return true;
        else
            return false;
    }
  • 相关阅读:
    maven的安装教程
    Spring 历史及设计理念
    MySQL Connector / Python
    LDAP & implementation
    RESTful levels & HATEOAS
    事务隔离级别
    cookie 和 session
    正则表达式验证器regex validator
    hello2部分代码分析
    filter
  • 原文地址:https://www.cnblogs.com/mini-coconut/p/9288952.html
Copyright © 2020-2023  润新知