题目链接:
大致思路:
扫描出栈序列,对当前扫描到的元素
b
i
b_i
bi :
✓ 若当前栈顶元素等于
b
i
b_i
bi, 符合预期,继续扫描序列b.
✓ 否则,把入栈序列的元素逐个压栈,直至栈顶等于
b
i
b_i
bi
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
stack<int> s;
int n = pushed.size(), k = 0;//k用来扫描pushed数组
for (auto x : popped) {
while (s.empty() || s.top() != x) {
if (k < n) s.push(pushed[k++]);
else return false;
}
s.pop();
}
return true;
}
};