Update 31. 栈的压入、弹出序列.md

调整模拟压入弹出过程的文字描述,补充合法与非法弹出序列的具体执行示例。
This commit is contained in:
CyC2018
2026-10-30 20:18:01 +08:00
parent f87dcf47f2
commit 633de57057
+3 -1
View File
@@ -12,7 +12,9 @@
## 解题思路
使用一个栈来模拟压入弹出操作。每次入栈一个元素后,都要判断一下栈顶元素是不是当前出栈序列 popSequence 的第一个元素,如果是的话则执行出栈操作并将 popSequence 往后移一位,继续进行判断。
使用一个栈来模拟压入弹出操作:按压入序列 putIn 依次入栈,每次入栈后,只要栈顶等于弹出序列 takeOut 中下一个要弹出的元素,就执行出栈操作并将 popIndex 往后移一位,继续进行判断。全部压入后栈为空,说明 takeOut 是合法的弹出顺序。
例如检查 4,5,3,2,1:压入 1~4 后栈顶 4 等于第一个要弹出的元素,弹出 4;压入 5 后弹出 5,此时栈顶依次是 3、2、1,与剩下的弹出序列一致,全部弹出,栈为空。检查 4,3,5,1,2 时,弹出 4、3、5 之后栈中从底到顶是 1、2,栈顶 2 不等于下一个要弹出的 1,而元素已经全部压入,栈不为空,返回 false。
```java
public boolean validateBookSequences(int[] putIn, int[] takeOut) {