• 剑指Offer 栈的压入、弹出序列


    题目描述

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
     
    思路:
    创建一个临时栈s,A序列依次压入s,每压入一个数,与B序列比较,如果想同,A出栈,B比较的元素后移一个。
     
    AC代码:
     1 class Solution {
     2 public:
     3     bool IsPopOrder(vector<int> pushV,vector<int> popV) {
     4             
     5         if(pushV.empty()||popV.empty()||pushV.size()!=popV.size())            
     6             return false;
     7         
     8         stack<int> s;
     9         int j=0;
    10         
    11         for(int i=0;i<pushV.size();i++)
    12         {
    13             s.push(pushV[i]);
    14             while(!s.empty()&&s.top()==popV[j])
    15             {
    16                 s.pop();
    17                 j++;               
    18             }
    19         }
    20         
    21         if(s.empty())
    22             return true;
    23         else
    24             return false;           
    25     }
    26 };
  • 相关阅读:
    JavaIO流(四) File文件对象
    Java IO流(三) 字符流Reader和Writer
    Java IO流(二) 字节流InputStream和OutputStream
    Java IO流(一)入门
    Decorator(装饰者)模式
    Listener(监听器)
    Filter(过滤器)
    Java开发入门
    啊哈哈,写博客的第一天
    MySQL变量
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5775309.html
Copyright © 2020-2023  润新知