题解 | 栈的压入、弹出序列
class Solution { public: bool IsPopOrder(vector<int>& pushV, vector<int>& popV) { // write code here int n = pushV.size(); stack<int> s; int j = 0;//j为输入数组的下标 int i = 0;//i为输出数组的下标 while(j<n){//输入数组全部输入为止 if(j<n && (s.empty() || s.top()!=popV[i])){ //未全部输入且栈顶元素与弹出元素不一致,则压入 s.push(pushV[j]); j++; } else{//if条件中,j<n一定为真,则else代表s不为空且s.top() ==popV[i] s.pop(); i++; } } while(s.top()==popV[i]){//对照剩余元素直到出现不同元素或栈空 s.pop(); i++; if(s.empty()) break; } if(s.empty()){ return true; } return false; } };