直接模拟有没有这样一个弹出序列即可
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
stack<int> a;
int posa = 0,posb = 0;
while(posa < pushed.size()){
if(a.size() == 0 || a.top() != popped[posb])
a.push(pushed[posa++]);
else{
a.pop();
posb++;
}
}
while(!a.empty() && posb < popped.size() && a.top() == popped[posb])
a.pop(),posb++;
return a.empty() ? true : false;
}
};
该博客内容涉及一种算法,用于验证给定的推入(pushed)和弹出(popped)序列是否能通过一个栈操作得到。具体实现中,使用了一个栈`a`,并遍历了pushed序列,当栈为空或者栈顶元素不等于下一个要弹出的元素时,将pushed序列的元素推入栈;否则,弹出栈顶元素。最后检查栈是否为空,如果为空则返回true,表示序列合法,否则非法。

211

被折叠的 条评论
为什么被折叠?



