剑指offer打卡Day18 栈的压入、弹出序列(重新学习 Vector 与 Stack)
压入元素:将压入顺序中的所有元素依次压入辅助栈中。 模拟弹出过程:逐个从栈顶弹出元素,并检查弹出序列中的当前元素是否与弹出的元素匹配。 检查匹配:如果当前弹出元素与弹出序列中的当前元素不一致,则返回false。 返回结果:如果所有弹出元素都能正确匹配且栈已为空,返回true;否则返回false。 初始检查:首先检查压入和弹出序列的长度是否相等,如果不相等直接返回false。 创建辅助栈:使用Stack类创建辅助栈,依次压入压入顺序中的元素。 弹出并检查:逐个从栈顶弹出元素,检查是否与弹出序列中的当前元素匹配。如果匹配,继续检查下一个元素;否则返回false。 最终检查:当所有元素都按顺序匹配且栈为空时,返回true;否则返回false。
发布日期:2021-04-30 21:03:09
浏览次数:146
分类:精选文章
本文共 899 字,大约阅读时间需要 2 分钟。
为了判断给定的弹出序列是否可能是某个栈的弹出顺序,我们可以模拟栈的压入和弹出过程,并检查弹出顺序是否符合栈的特性(即先进后出,FILO)。
方法思路
解决代码
public boolean isPopOrder(int[] pushA, int[] popA) { if (pushA.length != popA.length) return false; Stack stack = new Stack<>(); for (int num : pushA) { stack.push(num); } int pointer = 0; while (!stack.isEmpty() && pointer < popA.length) { int top = stack.pop(); if (top == popA[pointer]) { pointer++; } else { return false; } } return pointer == popA.length;} 代码解释
这种方法确保了弹出序列严格按照栈的规则进行,能够正确判断弹出顺序的合法性。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2026年06月12日 23时38分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php原生代码怎么连表查询,PHP tp5中使用原生sql查询代码实例
2023-03-01
PHP去掉转义符
2023-03-01
php反射api
2023-03-01
PHP反射ReflectionClass、ReflectionMethod 入门教程
2023-03-01
PHP反射机制
2023-03-01
php取当天的最后一秒_Docker快速搭建PHP开发环境详细教程
2023-03-01
php取绝对值
2023-03-01
php各种常用的算法
2023-03-01
php各种缓存策略对比
2023-03-01
php后台“爬虫”模拟登录第三方系统
2023-03-01
php后台的在控制器中就可以实现阅读数增加
2023-03-01
php命令行生成项目结构
2023-03-01
php命名空间
2023-03-01
PHP命名空间带来的干扰
2023-03-01
PHP和MySQL Web开发从新手到高手,第1天-搭建PHP开发环境
2023-03-01
php商店管理系统,基于PHP的商店管理系统.doc
2023-03-01
PHP四大主流框架的优缺点总结
2023-03-01
PHP图片处理—PNG透明缩放并生成灰图
2023-03-01
php在liunx系统中设置777权限不起作用解决方法
2023-03-01
PHP基于openssl实现的非对称加密操作
2023-03-01