剑指offer |栈的压入弹出顺序

题目描述及思路解析

输入两个整数序列,第一个序列代表的是栈的压入顺序,判断第二个序列是否为栈的弹出序列。例如,{1,2,3,4,5}是某栈的压入顺序,序{4,5,3,2,1}是该栈的一个弹出序列,而对于{4,3,5,1,2}就不可能是栈的弹出序列。需要一个辅助栈,首先我们将元素入栈,当入栈元素与要弹出的元素相同时,直接弹出,当与要弹出的元素不同时,就将元素先入辅助栈中,直到找到要出栈的元素为止,如果都找到了,说明此序列是栈的弹出序列,如果没找到,就说明此序列不是栈的弹出序列,如下图:
在这里插入图片描述

代码实现

bool isPopOrder(vector<int> pushStack, vector<int> popStack)
{
	stack<int> mystack;
	auto it1 = pushStack.begin();
	auto it2 = popStack.begin();

	while (it2 != popStack.end())
	{
		while (mystack.empty() || mystack.top() != *it2)
		{
			if (it1 == pushStack.end())
			{
				break;
			}
			mystack.push(*it1);
			it1++;
		}

		if (mystack.top() != *it2)
		{
			break;
		}
		it2++;
		mystack.pop();
	}
	if (mystack.empty())
	{
		return true;
	}
	else
	{
		return false;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值