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

栈的压入、弹出序列

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-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务