题目描述

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

思路

我们可以根据给定的测试用例来解释。压入顺序为1,2,3,4,5,弹出顺序4,5,3,2,1,首先,弹出序列的第一个值是4,那么压入序列4以前的元素都压入栈中,继续遍历弹出序列,得到5,那么压入序列中从4开始,到5的数应该被压入栈中,依次遍历完所有的弹出序列。

代码

public boolean IsPopOrder(int [] pushA,int [] popA) {Stack<Integer> stack = new Stack<>();ArrayList<Integer> res =new ArrayList<>();int start =0;for(int A:popA){int len = Arrays.binarySearch(pushA,A);for(int i=start;i<=len;i++){stack.push(pushA[i]);}if(!stack.empty()){if(A==(int)stack.peek()){res.add(stack.pop());start = len+1;}else{return false;} }else{return false;}}return true;}

每天一道剑指offer-栈的压入,弹出序列相关推荐

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

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

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

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

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

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

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

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

  5. python 栈的压入弹出序列

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

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

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

  7. 2021-07-22剑指offer31.栈的压入、弹出序列

    将pushed数组中的数字压入栈中 用一个指针指向popped序列中的数字 栈中的数字与指针指向的数字相同,就将栈顶的数字弹出, 指针移动到下一位数字比较, 如果不相同,指针不移动,栈顶继续放入. c ...

  8. 一道剑指offer经典面试题引发的思考

    大家在拿到一道算法题的时候,都会思考些什么呢? 大家有没有想过,当有一位面试官追问你,这道题有没有什么问题,或者有没有什么更好的方法,你们的内心是怎样的呢? 可能你会瞪大了眼,一些盲目自信的同学可能会 ...

  9. 【LeetCode笔记】剑指 Offer 33. 二叉树的后序遍历序列(Java、递归、栈)

    文章目录 题目描述 思路 && 代码 1. 递归做法 2. 辅助栈做法 二刷 打卡第四天-昨天没来得及写博客= = 题目描述 无须多言,直接冲思路吧! 思路 && 代码 ...

  10. 剑指offer——栈

    栈,初听这个词还以为是战斗的战呢. 经过学习知道了此"栈"非彼战.栈,与我们小时候玩的那个汉诺塔游戏极其相似,最先放的圆盘最后出,最后放的圆盘最先出,汉诺塔的示意图如下图所示:(此 ...

最新文章

  1. 微信小程序开通腾讯云开发实践流程附详细图解
  2. js实现的时间轴效果
  3. 国内网络环境优化qiime2安装过程-QIIME 2安装慢或无法下载的解决方案
  4. RAD Studio (Delphi) Firemonkey 教程
  5. Common BeanUtils组件的使用(源码)
  6. C#赋值运算符及解析
  7. c语言堆栈基本代码入栈出栈_c语言的简单的进栈出栈
  8. 肖仰华 | 知识图谱落地的基本原则与最佳实践
  9. Linux学习——Makefile
  10. 安装配置文件共享协议(SAMBA)
  11. python敲七游戏代码_敲七游戏数字表
  12. 2019黑马python吾爱_最新Python黑马头条推荐系统项目视频教程
  13. mysql analyze index_MYSQL优化 Analyze Table
  14. jira后台统计数据的一些sql(包含reopen计算,时效)
  15. Android实时日志查看工具Logcat
  16. 一文搞懂 Traefik2.1 的使用
  17. 如何快速发表期刊论文
  18. Vue mounted方法中使用data变量
  19. mac时间机器删除旧备份
  20. 华为hcie认证工程师里一定要知道的Radius 基本介绍

热门文章

  1. Linux之-atime、ctime、mtime
  2. UNIX/Linux RHEL6.3 root密码破解,GRUB加密(图文并茂)
  3. jQuery实例——表格隔行换色
  4. [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现GraphicsLayer上画点、线、面(五)
  5. WebSite设置首页或是加入收藏夹功能
  6. 是谁让网管员的薪水如此低廉?
  7. 5.PHP 命令行模式
  8. 38. 重定向与负载均衡
  9. 19. jQuery 遍历
  10. 9. PHP 字符串