| 栈的压入和弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,
请判断第二个序列是否为该栈的弹出顺序。
假设压入栈的所有数字均不相等。
例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,
但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
输出:true
解释:我们可以按以下顺序执行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
示例 2:输入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
输出:false
解释:1 不能在 2 之前弹出。

| 题解

class Solution:"""解题思路:1.p指针执行pushed,q指针指向poped的第一个元素2.同时遍历pushed 和 popped3.判断p指针元素是否跟q指针元素相同1.如果不等 p指针后移一个单位,直到相等为止1.如果一直不等,返回false2.如果行等,让行等的两个元素出栈2.如果相等 让相等的两个元素出栈4.出栈后,p指针指向前一个元素 1.继续判断p和q是否相等1.如果相等 继续出栈2.如果不等继续 p指针继续后移5.知道遍历结束1.判断pushed和popped 是否为看空1.如果为空 返回True2.如果不为空 返回False"""def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool:length = len(pushed)p, q = 0, 0while length > p and length > q:if popped[q] == pushed[p]: pushed.pop(p)popped.pop(q)# 特殊情况处理,第一个元素都相等的情况下,# 因为元素已经被移除,所以重置为0即第一元素p = p - 1 if p > 0 else 0else:p += 1# 从新计算length的长度length = len(pushed)if length == 0:breakreturn False if pushed and popped else True

python 栈的压入弹出序列相关推荐

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

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

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

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

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

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

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

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

  5. python栈的压入与弹出

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

  6. 剑指Offer(Java实现)栈的压入、弹出序列

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

  7. 剑指Offer--022-栈的压入、弹出序列

    链接 牛客OJ:栈的压入.弹出序列 九度OJ:http://ac.jobdu.com/problem.php?pid=1366 GitHub代码: 022-栈的压入弹出序列 CSDN题解:剑指Offe ...

  8. 剑指offer22:栈的压入、弹出序列

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

  9. 举例让抽象问题具体化:栈的压入、弹出序列

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

最新文章

  1. 抢程序员饭碗?自动写代码的Deep TabNine真如此神奇?
  2. linux+swig+python,linux下使用swig让python调用C++(复杂版:包括多文件调用和链接库)...
  3. linux stat函数讲解
  4. 《CCNP TSHOOT(642-832)学习指南》一导读
  5. Crash/Instance Recovery与Media Recovery的本质区别
  6. 几种在Linux下查询外网IP的办法
  7. 大型网站技术架构小结
  8. Netty实战 IM即时通讯系统(七)数据传输载体ByteBuf介绍
  9. POI文件导入:需求说明
  10. sscanf函数用法详解
  11. ThinkSNS 仿蘑菇街 社区购物分享系统
  12. ProcessOn使用
  13. php oracle 配置,关于php:为Windows 64位配置Oracle OCI8
  14. Hadoop 信息集成平台,让大数据分析更简单!
  15. 《深入理解Android2》读书笔记(二)
  16. 2022最新Funtool趣工具源码+iApp软件库/工具箱源码
  17. ai替换混合轴例子_可解释的vs可解释的AI:一个直观的例子
  18. Unity打包Android项目报错
  19. 大数据计算的基石——MapReduce
  20. PHP 大流量高并发解决方案

热门文章

  1. Linux疑难杂症解决方案100篇(八)-文本处理工具与bash的特性
  2. 用Tableau画可调整的树状图(Tree Diagram)
  3. 机器学习算法源码全解析(二)-范数规则化之L0、L1与L2范数
  4. Numpy中的array
  5. 【Python刷题】_8
  6. matlab读取.xyz文件及任意有间隔符数据
  7. QT中如何才能使用cos,sin等三角函数
  8. arcgis-把X Y点展到arcgis中的陷阱
  9. Spring AOP 实现原理与 CGLIB 应用--转
  10. 【开发工具】学习记录 初学MATLAB