难点坑点
- 我们先看class类中本题函数给定的传入参数是两个vector类型的序列,而这道题却是对栈的操作,我们可以通过创建stack类对象模拟入栈出栈操作,这样在后面的编程逻辑中会简化很多;
- 首先将入栈序列依次压入栈中,每次压入一个值就和出栈序列比较,当查找到当前出栈序列值后就不把本次值入栈的同时开始查找第二个出栈序列的值
- 注意使用stack1.top()函数的时候如果栈为空,会报错;
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
stack<int> stack1;
int num=1;
stack1.push(pushV[0]);
for (int i=0;i<popV.size();i++)
{
while(stack1.top()!=popV[i]){
if(num<pushV.size())
stack1.push(pushV[num++]);
else
return false;
}
stack1.pop();
}
return true;
}
};