剑指offer:栈的弹出顺序判断问题

剑指offer:栈的弹出顺序判断问题

问题描述

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

思路分析

解题思路可以由手动模拟栈的出栈顺序来获得。为了模拟出栈顺序,我们需要构建一个辅助栈,利用给定的入栈和出栈顺序,按照出栈顺序把入栈数值压入弹出一遍,对比弹出顺序是否与出栈相等,判断给定的出栈顺序是否正确。

  1. 对于题目所给的入栈顺序{1,2,3,4,5}和出栈顺序{4,5,3,2,1}
    1)第一个出栈元素为4,根据入栈顺序,将前面的所有元素(1,2,3,4)都入栈,才能把4弹出,所以把这些元素都压入辅助栈
    入栈顺序:1,2,3,4,5
    出栈顺序:4,5,3,2,1
    辅助栈内元素:1,2,3,4
    对比出栈顺序当前出栈元素,和辅助栈顶元素,相同,则将辅助栈栈顶元素弹出。
    2)第二个出栈元素为5,与辅助栈顶元素不相同,则根据入栈顺序将后面的元素压入辅助栈,直到将5压入辅助栈
    入栈顺序:1,2,3,4,5
    出栈顺序:4,5,3,2,1
    辅助栈内元素:1,2,3,5
    此时辅助栈顶元素为5,与要出栈的元素相同,将辅助栈栈顶元素弹出。
    3)第三个出栈元素为3,与辅助栈顶元素相同,直接弹出辅助栈顶元素
    入栈顺序:1,2,3,4,5
    出栈顺序:4,5,3,2,1
    辅助栈内元素:1,2,3
    4)第四个出栈元素为2,与辅助栈顶元素相同,直接弹出辅助栈顶元素
    入栈顺序:1,2,3,4,5
    出栈顺序:4,5,3,2,1
    辅助栈内元素:1,2
    5)第五个出栈元素为1,与辅助栈顶元素相同,直接弹出辅助栈顶元素
    入栈顺序:1,2,3,4,5
    出栈顺序:4,5,3,2,1
    辅助栈内元素:1
    到此,入栈顺序和出栈顺序都已经通过引入的辅助栈模拟完成,由上述模拟过程可知,给定的出栈顺序和入栈顺序是匹配的。

  2. 对于题目所给的入栈顺序{1,2,3,4,5}和出栈顺序{4,3,5,1,2}
    1)第一个出栈元素为4,根据入栈顺序,将前面的所有元素(1,2,3,4)都入栈&

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值