剑指offer-栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列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-栈的压入、弹出序列相关推荐
- 剑指offer-21.栈的压入弹出序列
1.题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
- 【剑指offer-Java版】22栈的压入弹出序列
栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...
- 剑指offer 栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...
- 数据结构与算法--举例分析法- 栈的压入弹出序列
举例分析 与上两篇问中画图方法一样,我们可以用举例模拟的方法思考分析复杂问题.当一眼不能看出问题的规律的时候,我们可以用几个具体的例子来模拟一下问题的过程.这样就和我们在程序出现问题时候的debug一 ...
- python 栈的压入弹出序列
| 栈的压入和弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序, 请判断第二个序列是否为该栈的弹出顺序. 假设压入栈的所有数字均不相等. 例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序 ...
- 剑指offer 31.栈的、压入弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是 ...
- 2021-07-22剑指offer31.栈的压入、弹出序列
将pushed数组中的数字压入栈中 用一个指针指向popped序列中的数字 栈中的数字与指针指向的数字相同,就将栈顶的数字弹出, 指针移动到下一位数字比较, 如果不相同,指针不移动,栈顶继续放入. c ...
- 剑指offer——栈
栈,初听这个词还以为是战斗的战呢. 经过学习知道了此"栈"非彼战.栈,与我们小时候玩的那个汉诺塔游戏极其相似,最先放的圆盘最后出,最后放的圆盘最先出,汉诺塔的示意图如下图所示:(此 ...
- 剑指Offer——栈的java实现和栈的应用举例
栈是一种先进后出的数据结构, 栈的实现如下: 首先定义了栈需要实现的接口: public interface MyStack<T> {/*** 判断栈是否为空*/ boolean isEm ...
- 【LeetCode笔记】剑指 Offer 33. 二叉树的后序遍历序列(Java、递归、栈)
文章目录 题目描述 思路 && 代码 1. 递归做法 2. 辅助栈做法 二刷 打卡第四天-昨天没来得及写博客= = 题目描述 无须多言,直接冲思路吧! 思路 && 代码 ...
最新文章
- 推荐 2个十分好用的 pandas 数据探索分析神器!
- cad自动标注界址点_CAD制图中的5个小技巧
- python【蓝桥杯vip练习题库】BASIC-21Sine之舞(递归 递推)
- C++ Primer 5th笔记(chap 14 重载运算和类型转换)递增和递减运算符
- GAN处理手写图片数据集
- 《Head First 设计模式》学习笔记——状态模式
- spring中bean的细节之三种创建Bean对象的方式
- 关于 php 用webservice传输数据的问题(nosoap与.NET对接)此处一直困扰三天时间,终于解决...
- MAVEN创建项目后缺少文件夹
- Linux驱动编程--基于I2C子系统的I2C驱动
- 7.1.21 jQuery 的 Post请求
- java中访问权限控制顺序_Java中的四种访问权限控制 | 学步园
- JavaWeb实体类转为json对象
- 金蝶k3单据编码规则_金蝶K3各单据操作步骤
- 台式计算机液晶显示屏尺寸,台式电脑显示屏共有多少种尺寸?
- 计网 - 计算机网络开篇
- 淘宝订单API接口参数详解
- mysql数据库 存储过程_Mysql数据库-存储过程
- c语言提取数字的每一位,C++,如何提取数字的每一位
- python分支机构_基于Python爬取天眼查网站的企业信息!Python无所不能!