《剑指offer》栈的压入、弹出序列

题目

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)

思路

序列1 压入序列
序列2 弹出序列
利用一个辅助栈来模拟这种压入弹出的状态。
辅助栈的顶端 不为空的话
就看看 栈顶值 和 序列2是否一样,
一样的话就弹出来,序列2当前值往后移一位;
不一样,就看序列1的当前值是否和序列2一样,一样的话就把序列1、序列2的当前值都往后移一位;
不一样,就把序列1的值入栈,把序列1当前值往后移一位;

这里写代码片

猜你喜欢

转载自blog.csdn.net/gsch_12/article/details/81224325
今日推荐