难度:中等。
使用一个栈来模拟。
正确解法:
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
int n = pushed.size();
if(n != popped.size())return false;
else if(n == 0)return true;
stack<int> stk;
int j = 0;
for(int i = 0; i < n; i++){
if(!stk.empty() && stk.top() == popped[i]){
stk.pop();
continue;
}
if(stk.empty() || (!stk.empty() && stk.top() != popped[i])){
int flag = 1;
for(; j < n; j++){
if(pushed[j] == popped[i]){
j++;
flag = 0;
break;
}
stk.push(pushed[j]);
}
if(flag)return false;
}
}
return true;
}
};
结果: