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) {