一、题目
提示:
1 <= pushed.length <= 1000
0 <= pushed[i] <= 1000
pushed 的所有元素 互不相同
popped.length == pushed.length
popped 是 pushed 的一个排列
二、思路
利用一个栈,空间复杂度为O(n),根据入栈顺序,模拟出栈的过程,主要判断条件popped[t] == stk.top()即可。。但是还可以优化,不使用栈,明早起来优化。
三、代码
class Solution { public: //pushed = [1,2,3,4,5], popped = [4,5,3,2,1] bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { stack<int> stk; int t = 0; for(int x: pushed){ stk.push(x); while(!stk.empty() && popped[t] == stk.top()){ stk.pop(); t++; } } return stk.empty(); } };