题目描述
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
- 假设压入栈的所有数字均不相等。
- 例如序列12345是某栈的压栈序列,序列45321是该压栈序列对应的一个弹出序列,但43512就不可能是该压栈序列的弹出序列。
解析
- 栈的特点是FIFO
- 压入序列是确定的,则压入序列之间的元素可能会经历压入后马上被弹出的情况
- 具体思路为:
- 根据弹出序列的第一个值,判断在该元素之前被压入栈的所有元素.
- 栈顶元素与弹出序列第一个值进行比较,等则判断弹出序列的下一个元素,判断依据同步骤1。
- 如果所有的元素都被压入栈中,但是两者仍然不相等,说明弹出序列不可能是原序列的弹出序列。
- 这样一直判断直到弹出序列的最后一个元素。

