栈的压入、弹出序列

已知两个数组,pushV存的是栈的压入序列,本题需要判断popV序列是不是pushV的弹出序列
做法:找一个辅助的栈,只要这个栈的空或者栈顶不等于当前的popV[i]的元素,就不断的向辅助栈中压入这个元素,直到栈不空,并且栈顶与popV[i]相等,就直接pop这个辅助栈,但是有个问题就是,在压入的时候j有可能会>n,如果一旦大于,则不可能是弹出序列,最终的判断是这个栈是不是空的栈,如果是空的话,popV就是pushV的弹出序列。(本题的两个系列是相等的)
下面是自己写的代码:如果大佬发现问题可以告诉我!

class Solution {
public:
	bool IsPopOrder(vector<int> pushV, vector<int> popV)
	{
		int n = popV.size();
		stack<int> st;
		int j = 0;
		for (int i = 0; i < n; i++)
		{
			while (st.empty() || st.top() != popV[i])
			{
				st.push(pushV[j++]);
				if (j > n)
					return false;
			}
			st.pop();//一旦辅助栈的栈顶元素与当前该弹栈的元素相同,就弹出这个元素
		}
		if (st.empty())
			return true;
		else
			return false;
	}
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值