class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
stack<int>stk;
int len=pushV.size();
int j=0;
for(int i=0;i<len;i++)
{
stk.push(pushV[i]);
if(pushV[i]==popV[j])//判断当前压入元素是否为pop元素(按照pop顺序,j作下标定位)
{
stk.pop(); //是则pop出这个元素
j++; //下标j移动到下一个元素
while(j<len)//继续判断下一个pop出的元素是不是已经压入栈中的元素
{
//这里一定一定要判断栈不为空!!!否则用例不能完全通过(栈空时找不到top)
if(!stk.empty()&&stk.top()==popV[j])
{
stk.pop();//是就pop出去
j++;
}
else//不是就继续压入
break;
}
}
}
//注意!!这里j不是满足条件的最后一个元素的下标,不是len-1,j++后已经是元素个数了,应该判断j==len
if(j==len)
{
return true;
}
return false;
}
};