From 633de5705750a92a0d0c927c2ee9cef62e4defdf Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 30 Oct 2026 20:18:01 +0800 Subject: [PATCH] =?UTF-8?q?Update=2031.=20=E6=A0=88=E7=9A=84=E5=8E=8B?= =?UTF-8?q?=E5=85=A5=E3=80=81=E5=BC=B9=E5=87=BA=E5=BA=8F=E5=88=97.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整模拟压入弹出过程的文字描述,补充合法与非法弹出序列的具体执行示例。 --- notes/31. 栈的压入、弹出序列.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/notes/31. 栈的压入、弹出序列.md b/notes/31. 栈的压入、弹出序列.md index 400a8448..1977da72 100644 --- a/notes/31. 栈的压入、弹出序列.md +++ b/notes/31. 栈的压入、弹出序列.md @@ -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) {