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

# -*- coding:utf-8 -*-
class Solution:def IsPopOrder(self, pushV, popV):# write code herestack = []j = 0for i in pushV:stack.append(i)while stack:if stack and stack[-1] == popV[j]:stack.pop()j += 1else:breakif stack:return Falseelse:return True

思路和我们人脑计算的思路是一致的

  • 建立一个辅助栈 stack = [];
  • 将压入序列的第一个数压入辅助栈,判断辅助栈顶的元素是否和弹出序列的第一个数(当前数)相同,如果相同的话辅助栈弹出该相同数(说明可以弹出序列的第一个数是对的),然后弹出序列移到第二个数(当前数);
  • 如果不同继续将压入序列的数入辅助栈,再次比较辅助栈顶元素是否和弹出序列当前数相同。
  • 直到压入序列中的数全部入辅助栈。
  • 如果辅助栈stack中还有元素,说明不是弹出序列,如果没有说明弹出序列正确。

转载于:https://www.cnblogs.com/laumians-notes/p/9067447.html

剑指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. 剑指Offer——栈的java实现和栈的应用举例

    栈是一种先进后出的数据结构, 栈的实现如下: 首先定义了栈需要实现的接口: public interface MyStack<T> {/*** 判断栈是否为空*/ boolean isEm ...

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

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

最新文章

  1. 推荐 2个十分好用的 pandas 数据探索分析神器!
  2. cad自动标注界址点_CAD制图中的5个小技巧
  3. python【蓝桥杯vip练习题库】BASIC-21Sine之舞(递归 递推)
  4. C++ Primer 5th笔记(chap 14 重载运算和类型转换)递增和递减运算符
  5. GAN处理手写图片数据集
  6. 《Head First 设计模式》学习笔记——状态模式
  7. spring中bean的细节之三种创建Bean对象的方式
  8. 关于 php 用webservice传输数据的问题(nosoap与.NET对接)此处一直困扰三天时间,终于解决...
  9. MAVEN创建项目后缺少文件夹
  10. Linux驱动编程--基于I2C子系统的I2C驱动
  11. 7.1.21 jQuery 的 Post请求
  12. java中访问权限控制顺序_Java中的四种访问权限控制 | 学步园
  13. JavaWeb实体类转为json对象
  14. 金蝶k3单据编码规则_金蝶K3各单据操作步骤
  15. 台式计算机液晶显示屏尺寸,台式电脑显示屏共有多少种尺寸?
  16. 计网 - 计算机网络开篇
  17. 淘宝订单API接口参数详解
  18. mysql数据库 存储过程_Mysql数据库-存储过程
  19. c语言提取数字的每一位,C++,如何提取数字的每一位
  20. python分支机构_基于Python爬取天眼查网站的企业信息!Python无所不能!

热门文章

  1. 如何用JavaScript判断dom是否有存在某class的值?
  2. OGEngine_粒子效果
  3. ubuntu 下安装java6的源
  4. 为什么说中国式报表特殊-5.4 填报
  5. 程序猿的英语之ielts indicator speaking test
  6. LINUX下文件字符集编码查看与转换并文件名编码转换
  7. 使用JIRA搭建企业问题跟踪系统(转)
  8. frp后台运行和停止
  9. 怎样使用python替代shell?
  10. CF467C George and Job