面试题:栈的压入、弹出序列题目:输入两个整数序列

11 查阅
面试题:栈的压入、弹出序列题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5

参考答案:

正确答案:

解决这个问题很直观的想法就是建立一个辅助栈,把输入的第一个序列中的数字依次压入该辅助栈,并按照第二个序列的顺序依次从该栈中弹出数字。
以弹出序列4、5、3、2、1为例分析压栈和弹出的过程。第一个希望被弹出的数字是4,因此4需要先压入到辅助栈里面。压入栈的顺序由压栈序列确定了,也就是在把4压入进栈之前,数字1、2、3都需要先压入到栈里面。此时栈里包含4个数字,分别是l、2、3、4,其中4位于栈顶。把4弹出栈后,剩下的三个数字是l、2和3。接下来希望被弹出的数字是5,由于它不是栈

序列