剑指 Offer 31. 栈的压入、弹出序列
思路:栈模拟
- 初始化:辅助栈stack,弹出序列的索引i
- 遍历压栈序列,各元素记为num:
- 元素num入栈;
- 循环出栈:若stack的栈顶元素=弹出序列元素popped[i],执行出栈和i++
- 返回值:若stack为空,则此弹出序列合法
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
stack<int> stk;
int i=0;
for(int n:pushed){
stk.push(n);
while(stk.size()&&stk.top()==popped[i]){
stk.pop();
++i;
}
}
return stk.empty();
}
};
时间复杂度 O(n)
空间复杂度 O(n)