zoukankan      html  css  js  c++  java
  • stack的应用

    题目描述:

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。

    假设压入栈的所有数字均不相等。

    例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。

    注意:若两个序列为空或长度不等则视为并不是一个栈的压入、弹出序列。

    样例

    输入:[1,2,3,4,5]
          [4,5,3,2,1]
    
    输出:true

    解答:

    参考来自:https://www.acwing.com/solution/acwing/content/765/

     

    class Solution {
    public:
    	bool isPopOrder(vector<int> pushV, vector<int> popV) {
    		if (pushV.empty() || popV.empty() || pushV.size() != popV.size()) return 0;
    		stack<int>st;
    		int popid = 0;	//出栈编号
    		int len = pushV.size();
    		for (int pushid = 0; pushid<len; pushid++) {
    			st.push(pushV[pushid]);
    			while (!st.empty() && st.top() == popV[popid]) {//判断能否出栈
    				st.pop();
    				popid++;		//出栈后,自增
    			}
    		}
    		if (st.empty())return 1;
    		return 0;
    
    	}
    };
    

      

  • 相关阅读:
    WPF应用
    web窗体的运用
    关于计算器的封装
    典型用户、用户故事
    第五次作业
    第四次作业
    四则运算
    git 认识
    First article
    TODO
  • 原文地址:https://www.cnblogs.com/52dxer/p/10435116.html
Copyright © 2011-2022 走看看