题目描述

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

解题思路

用栈来压入弹出元素,相等则出栈。

将数组 pushA 中的元素依次入栈,在入栈的过程中,若与数组 popA 中的标记索引处的元素相等,则栈顶元素出栈,且数组 popA 的标记索引后移。最后,直到数组 popA 的标记索引到数组尾端或者栈中的元素为空(全部出栈),则说明数组 popA 的元素是 pushA 的一个出栈序列。

代码实现

import java.util.ArrayList;
import java.util.Stack;public class Solution {public boolean IsPopOrder(int [] pushA,int [] popA) {if (null == pushA || null == popA) {return false;}Stack<Integer> stack = new Stack<>();int index = 0;for (int i = 0; i < pushA.length; i++) {stack.push(pushA[i]);while (!stack.isEmpty() && stack.peek() == popA[index]) {stack.pop();index ++;}}return stack.isEmpty();}
}

剑指Offer(Java实现)栈的压入、弹出序列相关推荐

  1. 【剑指offer-Java版】22栈的压入弹出序列

    栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...

  2. 剑指offer-21.栈的压入弹出序列

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

  3. 数据结构与算法--举例分析法- 栈的压入弹出序列

    举例分析 与上两篇问中画图方法一样,我们可以用举例模拟的方法思考分析复杂问题.当一眼不能看出问题的规律的时候,我们可以用几个具体的例子来模拟一下问题的过程.这样就和我们在程序出现问题时候的debug一 ...

  4. python 栈的压入弹出序列

    | 栈的压入和弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序, 请判断第二个序列是否为该栈的弹出顺序. 假设压入栈的所有数字均不相等. 例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序 ...

  5. 剑指offer 31.栈的、压入弹出序列

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是 ...

  6. abap判断包含字符当中包含小数点_剑指Offer整理3 -- 栈和队列 + 数学和字符串

    专题3 栈和队列 + 数学和字符串 专题3-1 栈和队列 1. 栈的压入弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字 ...

  7. 牛客网剑指offer——Java题解

    剑指offer JZ1 二维数组中的查找 题目描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这 ...

  8. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  9. 剑指offer之二叉搜索树的后序遍历序列

    剑指offer之二叉搜索树的后序遍历序列 欢迎关注作者博客 简书传送门 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个 ...

  10. LeetCode Algorithm 剑指 Offer 57 - II. 和为s的连续正数序列

    剑指 Offer 57 - II. 和为s的连续正数序列 Ideas 区间问题首先想到用双指针. 因为这题没有给定数组,其实相当于就是一个从1到target的数组,然后直接套双指针的模板就可以了. 双 ...

最新文章

  1. BZOJ 2733 | 洛谷 P3224 [HNOI2012]永无乡
  2. maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程(转)...
  3. 性能测试的几个参数概念
  4. python输入姓名_Python 用户输入用户名,进行验证
  5. python 写入excel 日期_详解:Python实现大数据收集至excel的思路大牛分享(建议收藏)...
  6. 中怎么提取时间中的月份_怎么提取图片中的文字?花上1分钟学会,轻松提取,按时下班...
  7. 字节跳动代理商_横跨字节跳动海外抖音核心代理商爆发!(002803)
  8. PLC数据采集解决方案及数采网关
  9. python绘制折线图显示点数据_Python_散点图与折线图绘制
  10. mysql创建视图查询_【MySQL】MySQL视图创建、查询。
  11. 算法分析稳定匹配问题c语言,算法-稳定匹配StableMatching
  12. linux中设置中英文语言
  13. 数据分析师必须掌握的模型——AARRR漏斗模型
  14. DPDK内存(二)内存申请操作
  15. stata实现经济生态的空间杜宾模型
  16. 超级强大的淘宝开源平台(taobao-code)
  17. WPF 自定义ToggleButton样式
  18. 计算机故障代码ff,电脑开机时主板上只显示FF怎么回事?
  19. 超宽带(UWB)无线通信技术介绍
  20. hive正则表达式匹配中文或者字符

热门文章

  1. linux:进程占用的端口,在linux中查看进程占用的端口号
  2. 4j是合法python数字类型_python数字类型
  3. 面试可能遇到的问题总结【二】
  4. IS服务器下做301永久重定向设置方法
  5. sql server扫盲系列
  6. Mysql(五) JDBC
  7. 关于函数形参的一些讨论
  8. [转]学校的统一订书80%该烧掉——IT推荐书单
  9. 正则表达式 小结 经典解决方案[1]
  10. datagridview当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。