【剑指Offer】栈的压入、弹出序列
发布日期:2022-02-10 08:55:13
浏览次数:36
分类:技术文章
本文共 1181 字,大约阅读时间需要 3 分钟。
题目
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {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 之前弹出。思路
模拟,看到有描述特别好的,直接拿过来
按照 popped 中的顺序模拟一下出栈操作,如果符合则返回 true,否则返回 false。
使用一个栈 st 来模拟该操作。将 pushed 数组中的每个数依次入栈,同时判断这个数是不是 popped 数组中下一个要 pop 的值,如果是就把它 pop 出来。最后检查栈是否为空。
- 初始化栈 stack,j = 0;
- 遍历 pushed 中的元素 x;
- 当 j < popped.size() 且栈顶元素等于 popped[j]:
- 弹出栈顶元素;
- j += 1;
- 当 j < popped.size() 且栈顶元素等于 popped[j]:
- 如果栈为空,返回 True,否则返回 False。
代码
class Solution {public: bool validateStackSequences(vector & pushed, vector & popped) { if(pushed.size() <= 0){ return true; } stack st; int j = 0; for(int i = 0;i < pushed.size();i++){ st.push(pushed[i]); while(st.empty() == false && j < popped.size() && popped[j]==st.top()){ st.pop(); j++; } } return st.empty(); }};
转载地址:https://blog.csdn.net/hanmin822/article/details/105615072 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月10日 19时10分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Android】 Intent详解
2019-04-26
【Android】 常用的Intent
2019-04-26
Android中AsyncTask的简单用法
2019-04-26
【Android】 Android中Log调试详解
2019-04-26
【Android】Android中WIFI开发总结(二)
2019-04-26
【Android】Android之WiFi开发应用示例
2019-04-26
【Android】 Android adb常见问题整理
2019-04-26
【Android】 Android体系结构图
2019-04-26
【Android】 Android中spinner下拉列表的使用
2019-04-26
说说在 python 中,如何删除左右两边不需要的字符
2019-04-26
说说如何管理 Spring Boot 中的起步依赖
2019-04-26
说说如何在 Linux 中,新建账号
2019-04-26
说说如何在 linux 中搭建 FTP 服务
2019-04-26
说说如何在 Python 的正则表达式中使用分组
2019-04-26
说说 Python 正则表达式的匹配类型
2019-04-26
说说 Python 的贪心和非贪心匹配策略
2019-04-26
说说在 Python 中,如何找出所有字符串匹配
2019-04-26
说说 Python 正则表达式中的那些字符类别码
2019-04-26
说说 Spring Boot 的条件化注解
2019-04-26
说说如何使用 Python 在 word 中创建表格
2019-04-26