栈的压入、弹出序列

题解方法

模拟入栈、出栈过程。

  1. do 访问 $num \in pushed$:
    1. num 入栈。
    2. do 出栈 While 栈顶元素 = popped[i]:
      1. 出栈。
      2. i++。
  2. 判断栈是否为空。

核心代码

1
2
3
4
5
6
7
8
9
10
11
12
public boolean validateStackSequences(int[] pushed, int[] popped) {
Deque<Integer> stack = new ArrayDeque<Integer>();
int i = 0;
for (int num: pushed) {
stack.push(num);
while (!stack.isEmpty() && stack.peek() == popped[i]) {
stack.pop();
i++;
}
}
return stack.isEmpty();
}

题目来源

栈的压入、弹出序列 - 力扣(LeetCode)