[剑指offer] 栈的压入、弹出序列
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
解题思路
模拟堆栈操作的过程,将原数列依次压栈,把栈顶元素与所给出栈队列相比,如果相同则出栈,如果不同则继续压栈,直到原数列中所有数字压栈完毕。最后,检测栈中是否为空,若空,说明出栈队列可由原数列进行栈操作得到。否则,说明出栈队列不能由原数列进行栈操作得到。
参考代码
import java.util.ArrayList; import java.util.Stack; public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) { if(pushA.length != popA.length || pushA.length == 0 || popA.length == 0) return false; Stack<Integer> stack = new Stack<>(); int index = 0; for(int i = 0; i < pushA.length; i++){ stack.push(pushA[i]); while(!stack.empty() && stack.peek() == popA[index]){ stack.pop(); index++; } } return stack.empty(); } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
多值模糊查询报表的制作
在数据查询系统中,经常会涉及到模糊查询和多值查询。对于模糊查询,我们可能都有所了解。就是根据用户在参数框中输入的关键字进行模糊匹配,这在SQL中是通过like条件实现的。而多值查询则大多是一次在参数框中输入2个以上关键词,以字符串组,整数组等形式进行参数传递,这在SQL中是通过in条件完成多值匹配的。 但是用户的需求往往是无止境的!最典型就是把这两种好使的方法结合起来,也就是两种查询的结合–在参数框中输入多个关键字,根据多个关键字进行模糊查询。比如,用户要根据产品名称进行多值模糊查询,当输入为“奶酪,糖”时,希望找出产品名称中含有奶酪或糖的产品列表,如下图所示: 为了程序猿哥哥可以早日跟加班say goodbye , 不再做单身汪(咦?为什么我这么热心?),让我们一起了解一下润乾报表是怎么做到两种查询的完美结合的…… 一共需要……1、2、3、4步: 1.定义主表模板: 其中1-3行设置行属性为报表头,其余行为数据区即可。 B3单元格表达式为:=macro1,目的是显示查询条件的拼接结果,以便校验最终数据是否正确。 A5单元格表达式为:=ds1.select(产品ID),目的是取数ds1...
- 下一篇
javascript变量对象 函数调用栈 作用域 闭包等细解!
说明 下面代码演示基于window系统chrome浏览器环境,版本号为63.0.3239.132,32位!相关结果可能会有一点出入,请也实际为准! 相关代码调试的过程中查看结果的步骤: 打开浏览器控制台,切换到sources板块,并选择相应的源文件; 在对应的源文件代码左边的行号上打上断点; 然后刷新浏览器,浏览器会在对应打断点的代码出停止执行,此时我们根据需要按f11键一步一步的运行代码,并同时查看代码的调用栈,作用域等情况,主要查看source板块下最右边子板块的Call Stack和Scope项。 相关概念梳理 其实从我自身出发,我觉的如果需要更好地理解变量对象的话,那么需要对以下概念有一个比较基本的理解会更方便些! 函数调用栈 为了理解函数调用栈,我们先写一段代码: function fn1(){ console.log('fn1'); fn2(); }; function fn2(){ console.log('fn2'); }; fn1(); 我们在fn2函数调用的地方打上断点,然后刷新浏览器,查看Call Stack选项,会看到下面的结果: fn1 (anonymous)...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块