题目描述:
思路:用栈模拟pushed,用cur标记popped,如果当前栈顶元素等于popped[cur],则弹栈,否则继续压栈,最后检查栈是否为空
代码如下(c++):
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
if (pushed.size() != popped.size())
return false;
deque<int> stack;
int cur = 0;
for (int i = 0; i < pushed.size(); i++) {
stack.push_back(pushed[i]);
while (!stack.empty()&&stack.back() == popped[cur]) {
stack.pop_back();
cur++;
}
}
return stack.empty();
}
};
评论区思路类似