
【剑指Offer】栈的压入、弹出序列
发布日期:2022-02-10 08:55:13
浏览次数:14
分类:技术文章
本文共 1123 字,大约阅读时间需要 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;
}
stackst;
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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2023年03月15日 04时57分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
作为技术人创业,那些过来人是如何总结的?
2019-09-09 07:57:00
[Alibaba-ARouter] 简单好用的Android页面路由框架
2019-09-09 07:56:59
Android Studio上非常棒的插件
2019-09-09 07:56:59
华为手机logcat不出日志解决方案
2019-09-09 07:56:58
Android 判断app是否在前台还是在后台运行
2019-09-09 07:56:58
android中JSON的解析
2019-09-09 07:56:57
倍数提高工作效率的Android Studio奇技
2019-09-09 07:56:57
建立一个RequestQueue
2019-09-09 07:56:56
抓包工具Charles的使用心得(Android、iOS通用)
2019-09-09 07:56:56
Android开发模式:MVP Vs MVVM
2019-09-09 07:56:55
ViewPager撤消左右滑动切换功能
2019-09-09 07:56:55
Android中原http请求的https实现(URLConnection 、volley)(volley不修改源码)
2019-09-09 07:56:54
Android 重写EditText回车事件
2019-09-09 07:56:54
JAVA 的data类型 long类型 生成星期几汇总
2019-09-09 07:56:53
Android监听home键的方法
2019-09-09 07:56:53
Android用户引导页实现,圆点实现动画效果
2019-09-09 07:56:52
Android自定义ScrollView分段加载大文本数据到TextView
2019-09-09 07:56:52
给 Android 开发者的 RxJava 详解
2019-09-09 07:56:51
使用getIdentifier()获取资源Id
2019-09-09 07:56:50
Android内存优化之——内存泄漏篇
2019-09-09 07:56:49