剑指Offer(Java实现)栈的压入、弹出序列
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但4,3,5,1,2 就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
解题思路
用栈来压入弹出元素,相等则出栈。
将数组 pushA 中的元素依次入栈,在入栈的过程中,若与数组 popA 中的标记索引处的元素相等,则栈顶元素出栈,且数组 popA 的标记索引后移。最后,直到数组 popA 的标记索引到数组尾端或者栈中的元素为空(全部出栈),则说明数组 popA 的元素是 pushA 的一个出栈序列。
代码实现
import java.util.ArrayList;
import java.util.Stack;public class Solution {public boolean IsPopOrder(int [] pushA,int [] popA) {if (null == pushA || null == popA) {return false;}Stack<Integer> stack = new Stack<>();int index = 0;for (int i = 0; i < pushA.length; i++) {stack.push(pushA[i]);while (!stack.isEmpty() && stack.peek() == popA[index]) {stack.pop();index ++;}}return stack.isEmpty();}
}
剑指Offer(Java实现)栈的压入、弹出序列相关推荐
- 【剑指offer-Java版】22栈的压入弹出序列
栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...
- 剑指offer-21.栈的压入弹出序列
1.题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列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} 是 ...
- abap判断包含字符当中包含小数点_剑指Offer整理3 -- 栈和队列 + 数学和字符串
专题3 栈和队列 + 数学和字符串 专题3-1 栈和队列 1. 栈的压入弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字 ...
- 牛客网剑指offer——Java题解
剑指offer JZ1 二维数组中的查找 题目描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这 ...
- 剑指offer java版 test3—从尾到头打印链表
标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...
- 剑指offer之二叉搜索树的后序遍历序列
剑指offer之二叉搜索树的后序遍历序列 欢迎关注作者博客 简书传送门 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个 ...
- LeetCode Algorithm 剑指 Offer 57 - II. 和为s的连续正数序列
剑指 Offer 57 - II. 和为s的连续正数序列 Ideas 区间问题首先想到用双指针. 因为这题没有给定数组,其实相当于就是一个从1到target的数组,然后直接套双指针的模板就可以了. 双 ...
最新文章
- BZOJ 2733 | 洛谷 P3224 [HNOI2012]永无乡
- maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程(转)...
- 性能测试的几个参数概念
- python输入姓名_Python 用户输入用户名,进行验证
- python 写入excel 日期_详解:Python实现大数据收集至excel的思路大牛分享(建议收藏)...
- 中怎么提取时间中的月份_怎么提取图片中的文字?花上1分钟学会,轻松提取,按时下班...
- 字节跳动代理商_横跨字节跳动海外抖音核心代理商爆发!(002803)
- PLC数据采集解决方案及数采网关
- python绘制折线图显示点数据_Python_散点图与折线图绘制
- mysql创建视图查询_【MySQL】MySQL视图创建、查询。
- 算法分析稳定匹配问题c语言,算法-稳定匹配StableMatching
- linux中设置中英文语言
- 数据分析师必须掌握的模型——AARRR漏斗模型
- DPDK内存(二)内存申请操作
- stata实现经济生态的空间杜宾模型
- 超级强大的淘宝开源平台(taobao-code)
- WPF 自定义ToggleButton样式
- 计算机故障代码ff,电脑开机时主板上只显示FF怎么回事?
- 超宽带(UWB)无线通信技术介绍
- hive正则表达式匹配中文或者字符