mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-31 19:13:42 +00:00
Update 31. 栈的压入、弹出序列.md
调整模拟压入弹出过程的文字描述,补充合法与非法弹出序列的具体执行示例。
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user