温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

栈的压入、弹出序列

发布时间:2020-06-20 07:26:10 来源:网络 阅读:421 作者:qdqade 栏目:开发技术

题目描述

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


解法:

模拟栈的操作

创建一个stack变量,表示入栈;


  1. 如果stack为空,或者stack.top()==popV[i],stack.pop

  2. 否则,stack.push(pushv【inpos])


  3.  bool IsPopOrder(vector<int> pushV, vector<int> popV) {
  4.     int size1 = pushV.size();
  5.     int size2 = popV.size();
  6.     if (size1 != size2||size1==0)
  7.         return false;
  8.     stack<int> st;
  9.     int inpos = 0;
  10.     for (int i = 0; i<size2;){
  11.         if (!st.empty() && st.top() == popV[i]){
  12.             st.pop();
  13.             i++;
  14.         }
  15.         else{
  16.             if (inpos < size1)
  17.                 st.push(pushV[inpos++]);
  18.             else
  19.                 return false;
  20.         }
  21.     }
  22.     return inpos == size1&&st.empty();
  23. }
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI