题目描述
输入两个整数序列,第一个序列表示栈的压入序列,请判断第二个序列是否是栈的弹出序列。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。‘
思路分析
首先考虑这个问题肯定是需要一个辅助栈,方便后边讲思路,我们将压入序列称为pushV,弹出序列称为popV,按照pushV将数据压入栈,压入一个数据就比较栈顶数据是否是popV中的第一个数,如果是,就将该栈顶数据pop掉,然后继续压入,并进行比较。
为了进行比较,我们需要一个辅助的vector来存放从栈内pop掉的数据,最后将这个vector和popV进行比较,如果顺序相同,说明popV是该栈的一个弹出序列,否则就不是。
下面画图分析下思路:(以上边的例子说明)
pushV:1、2、3、4、5
popV:4、5、3、2、1
现在以popV的序列为4、3、5、1、2分析: