牛客:栈的压入、弹出序列

题目链接
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pushV int整型vector * @param popV int整型vector * @return bool布尔型*/bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {// write code hereint p1=0;//标记入栈元素位置int p2=0;//标记出栈元素位置stack<int> s1;while(p1<pushV.size()){if(!s1.empty()&&popV[p2]==s1.top())//看当前元素是否可以直接出栈{s1.pop();p2++;continue;//跳过当前回合,防止后面还有可以直接出的数字(如果还有直接可以出的数字就先不要进栈)}if(pushV[p1]!=popV[p2]){s1.push(pushV[p1]);p1++;}else {//相等的情况要入栈再出栈,这里直接省略这个步骤是一样的p1++;p2++;}}//到这里入栈就走完了if(s1.empty()){return true;}else{while(!s1.empty()){int tmp=s1.top();if(tmp!=popV[p2]){return false;}s1.pop();p2++;}return true;}}
};
