题解 | #栈的压入、弹出序列#

栈的压入、弹出序列

https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106

class Solution
{
public:
	/*
	 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
	 *
	 *
	 * @param pushV int整型vector
	 * @param popV int整型vector
	 * @return bool布尔型
	 */
	bool IsPopOrder(vector<int>& pushV, vector<int>& popV)
	{
		//0.规定pushV为入栈序列,popV为出栈序列
		//1.入栈序列先入栈s
		//2.s的栈顶数据和出栈序列比较
			//a.如果匹配,出栈序列++,出s的栈顶元素,继续比较,直到栈为空,或者不匹配,回到1步骤
			//b.如果不匹配,回到步骤1
		//3.如果一直走到出栈序列结束就返回true
		stack<int> s;
		int pushVIndex = 0, popVIndex = 0;
		s.push(pushV[pushVIndex++]);
		while (popVIndex < popV.size())
		{
			if (s.empty() || s.top() != popV[popVIndex])
			{
				if (pushVIndex > pushV.size())
				{
					return false;
				}
				s.push(pushV[pushVIndex]);
				pushVIndex++;
			}
			else if (s.top() == popV[popVIndex])
			{
				popVIndex++;
				s.pop();
			}
		}
		return true;
	}
};

全部评论

相关推荐

有工作后先养猫:太好了,是超时空战警,我们有救了😋
点赞 评论 收藏
分享
10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务