给定入栈和出栈顺序,判定是否合理,这道题可以使用一个栈进行模拟实验,只要处理完所有元素后,这个栈为空,就说明是合理的。
下面是C++实现的代码:
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
stack<int> s;
int poppedIndex = 0;
for (auto i : pushed) {
s.push(i);
while (!s.empty() && s.top() == popped[poppedIndex]) {
s.pop();
poppedIndex++;
}
}
return s.empty();
}
};