一、题目
二、题解
模拟栈的入栈过程即可:遍历出栈序列,如果栈为空或者当前出栈序列的元素与栈顶元素不相同就继续将入栈序列的元素入栈,直到遇到那个要出栈的元素循环停止,继续处理出栈序列里面下一个要出栈的序列。重复上述操作,如果是合法的出栈顺序,那么最后栈会空
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
int s[pushed.size()];
int top = -1, j = 0;
for (int i = 0; i < popped.size(); i++) {
if (top != -1 && s[top] == popped[i])
top--;
else {
while (j < pushed.size() && pushed[j] != popped[i]) s[++top] = pushed[j++];
j++;
}
}
return top == -1;
}
};