class Solution { public: bool IsPopOrder(vector<int> pushV,vector<int> popV) { int i=0,j=1; int length = pushV.size(); vector<int> testV; testV.push_back(pushV[0]); while(testV.back() != popV[0] && j < length){ testV.push_back(pushV[j]); j++; }//为了开头,首先压入这么多 while(length-- > 0){//验算几次 if(popV[i] == testV.back()){ i++; testV.pop_back();//如果相同就出栈 }else{//栈顶不是所要的数字 //尝试着继续压栈 while(j < pushV.size() && testV.back()!= popV[i]){//要么压完所有栈出来,要么压到对的那一栈出来 testV.push_back(pushV[j]); j++; } if(popV[i] == testV.back()){ i++; testV.pop_back();//如果相同就出栈 }else{ //压完所有栈都没看见,那肯定是在栈中,则失败。 return false; } } } return true; } };