剑指 Offer 31. 栈的压入、弹出序列【无取巧,易于理解!】
看题解时,很多大牛用很少的代码就完成了AC,但可能看了很多遍也看不懂,因此萌生了写一种最“笨”最完整的代码的想法,这样大家可以通过我的代码入门,看懂了再去挑战大牛们的简洁解法。
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {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 之前弹出。提示:
0 <= pushed.length == popped.length <= 1000
0 <= pushed[i], popped[i] < 1000
pushed 是 popped 的排列。
classSolution {public boolean validateStackSequences(int[] pushed, int[] popped) {Stack<Integer> s = new Stack<>();int len1 = pushed.length, len2 = popped.length;if(len1 == 0) return true; // 鲁棒性int i = 0, j = 0;while(i < len1) {s.push(pushed[i]);while(!s.isEmpty() && s.peek() == popped[j]) {s.pop();j++;}i++;}return (j == len2 ? true : false);}
}
剑指 Offer 31. 栈的压入、弹出序列【无取巧,易于理解!】相关推荐
- 【LeetCode】剑指 Offer 31. 栈的压入、弹出序列
[LeetCode]剑指 Offer 31. 栈的压入.弹出序列 文章目录 [LeetCode]剑指 Offer 31. 栈的压入.弹出序列 package offer;import java.uti ...
- 剑指Offer 31 栈的压入、弹出序列
栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2 ...
- 剑指offer——31.栈的压入、弹出序列(想法不错,比剑指的简单)
题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...
- 剑指offer 31. 栈的压入、弹出序列
声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.问题描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序. 如第一个输入序列为{1 2 ...
- 【算法】剑指 Offer 31. 栈的压入、弹出序列 【重刷】
1.概述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2 ...
- 【LeetCode笔记】剑指 Offer 31. 栈的压入、弹出序列 (Java、栈)
文章目录 题目描述 代码 && 思路 二刷 题目描述 打卡第三天!加油加油- 数据结构笔试题貌似也会考= =,不过考法不一样,有点规律. 总的来说还是挺有意思的,我们直接来看代码吧- ...
- 【剑指offer-Java版】22栈的压入弹出序列
栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...
- 剑指Offer之栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入书序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相同.例如1.2.3.4.5是某栈的压入序列,序列5.4.3.2.1是该栈对应的一 ...
- 剑指offer:栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
最新文章
- 实现网页中按钮刷新的N种方法
- java一定时间间隔的定时任务_Java 定时任务---Timer
- [BZOJ 3238] [AHOI 2013] 差异 【后缀数组 + 单调栈】
- oracle中获取年份、月份段内的时间
- 09_EGIT插件的安装,Eclipse中克隆(clone),commit,push,pull操作演示
- WinForm中的各种对话框
- ps aux grep java_linux命令ps-aux监控java进程
- 图标截取——背景偏移量技术
- Java 算法训练 一元三次方程求解
- asp mysql 设置编码_ASP对数据库各种操作的代码
- SpringBoot读取外部配置文件的方法
- 2019年成都房产新政,有这些内容需注意
- 好用的医药管理软件都有哪些特点
- coherence mysql_Coherence Step by Step 第三篇 缓存(四) 缓存数据源(翻译)
- Silvaco TCAD仿真3——DeckBuild
- Julia之初体验(九)字符串连接与匹配
- 我想深入学习Go语言
- 基带传输与频带传输(关系与区别)
- 这个程序员为了买股票,直接分析了上市公司财报,还把代码开源了
- 使用正则表达式批量替换掉 空格及换行符