解法:贪心
思想:
贪心:如果栈顶元素等于popped序列中下一个值,则应立刻将该值pop出来
复杂度:
●时间:O(N),入栈一次出栈一次
●空间:O(N),辅助栈
代码:
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
if(pushed.size() != popped.size())
return false;
if(pushed.size() == 0)
return true;
int index = 0;
stack<int>my_stack;
for(int num : pushed){
my_stack.push(num);
//不为空且栈顶元素等于下一个popped元素时,才弹出
//注意是while
while(!my_stack.empty() && my_stack.top() == popped[index]){
my_stack.pop();
index++;
}
}
//pushed中元素全部遍历完,跳出循环
return my_stack.empty();
}
};