Java for You 数据结构 剑指Offer之二十二-栈的压入、弹出序列

剑指Offer之二十二-栈的压入、弹出序列

题目描述

  • 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
  • 假设压入栈的所有数字均不相等。
  • 例如序列12345是某栈的压栈序列,序列45321是该压栈序列对应的一个弹出序列,但43512就不可能是该压栈序列的弹出序列。

解析

  • 栈的特点是FIFO
  • 压入序列是确定的,则压入序列之间的元素可能会经历压入后马上被弹出的情况
  • 具体思路为:

  1. 根据弹出序列的第一个值,判断在该元素之前被压入栈的所有元素.
  1. 栈顶元素与弹出序列第一个值进行比较,等则判断弹出序列的下一个元素,判断依据同步骤1。
  1. 如果所有的元素都被压入栈中,但是两者仍然不相等,说明弹出序列不可能是原序列的弹出序列。
  1. 这样一直判断直到弹出序列的最后一个元素。

代码实现

本文由 java4u.cn 发布,可自由转载、引用,但需署名作者且注明文章出处(作者:白色蜗牛,出处:java4u.cn)。如转载至微信公众号,请在文末添加作者公众号二维码。 https://java4u.cn/algorithms/3329.html

作者: 蜗牛

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

公众号:蜗牛互联网

在线咨询: QQ交谈

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部