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

    题目

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

    思路

    1. 如果下一个弹出的数字不在栈顶,则可能要弹出的数字还没入栈,接着把压入序列中的数字接着入栈,直到下一个需弹出的数字在栈顶
    2. 如果下一个弹出的数字是栈顶数字,那么直接弹出
    3. 如果把压入序列中的所有数字都入栈还没找到要弹出的数字,那么该序列不可能是一个弹出序列

    class Solution {
    public:
        bool IsPopOrder(vector<int> push,vector<int> pop) {
            if(push.size()!=pop.size())
                return false;
              
            stack<int> s;
            for(int i=0,j=0;i<push.size();++i)
            {
                s.push(push[i]);
                while(j<push.size()&&pop[j]==s.top())
                {
                    ++j;
                    s.pop();
                }
            }
            return s.empty();
        }
    };
  • 相关阅读:
    6.Dump域内用户Hash姿势集合
    4.浅谈跨域劫持
    7. Smali基础语法总结
    7.linux安全基线加固
    12. git常用语法总结
    5.内网渗透之PTH&PTT&PTK
    4. 内网渗透之IPC$入侵
    1.我所了解的内网渗透
    34.不安全的HTTP
    2.内网渗透之端口转发
  • 原文地址:https://www.cnblogs.com/tianzeng/p/10185328.html
Copyright © 2011-2022 走看看