剑指offer 22:验证栈的压入、弹出序列
题目描述
解题思路
栈的压入与弹出,需明确的一点就是出入栈的顺序是反向执行的,不存在跳跃执行的过程,说直白一点就是,已知入栈的顺序,当出栈的时候,要么出栈元素位于栈顶,要么待出栈的元素还未入栈,不可能出现待出栈的元素还位于栈顶元素之下的情况。因此此题目的解题思路也即明确。
1.设置两个指示指针分别指向入栈序列和出栈序列,初始为0;
2.定义一个stack开始出入栈操作。
3.将出栈序列的当前元素与入栈序列当前元素比较,看是否相等,相等则一起出栈,若不相等,则入栈序列继续入栈,知道放入的元素与当前出栈元素相同,若所有元素入栈后仍不匹配,则此出栈序列非法。
4.循环执行3,直到出栈序列元素全部为空,此时说明出栈序列合法。
C++代码实现:
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
int size1=pushV.size();
int size2=popV.size();
bool flag=false;
if(size1==){
return true;
}
int posv=,popv=;
stack<int> tmp;
while(popv<size2){
while((tmp.empty() || tmp.top() != popV[popv]) && posv<size1){//当为空时需要填补。入栈队列
if(posv==size1){
break;
}
tmp.push(pushV[posv++]);
}
if(tmp.top()!=popV[popv]){ //检测当前出栈元素是否位于栈顶
break;
}else{
tmp.pop();
popv++;
}
}
if(tmp.empty()){
flag=true;
}
return flag;
}
};
剑指offer 22:验证栈的压入、弹出序列的更多相关文章
- 【剑指offer】栈的压入弹出序列,C++实现(举例)
原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为第一个序列的出栈序列.注意 ...
- 剑指offer - 栈的压入弹出序列 - JavaScript
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 ...
- 剑指offer-面试题22.栈的压入,弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第 二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等. 例如序列1.2.3.4.5是某栈的压栈序列,序列4.5.3.2.1 是该压栈 ...
- 剑指Offer20 栈的压入弹出序列是否正确
/************************************************************************* > File Name: 20_IsPopO ...
- 剑指 offer set 10 栈的压入、弹出序列
总结 1. 通过按位对比来判断, 没有更优的方法了
- 剑指offer-栈的压入弹出序列21
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
- 剑指offer 栈的压入弹出 顺序
判断: 如果下一个弹出的数字刚好是栈顶元素,那么直接弹出 如果下一个弹出的数字不在栈顶,我们要把压栈序列中,还没有入栈的数字压入辅助栈,知道把下一个需要弹出的数字压入栈顶 如果所有的数字都入栈,但是仍 ...
- 剑指offer-面试题31-栈的压入弹出序列-栈
#include<iostream> #include<string.h> #include<algorithm> #include<cmath> #i ...
- C++版 - 剑指offer 面试题22:栈的压入、弹出序列 题解
剑指offer 面试题22:栈的压入.弹出序列 提交网址: http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId ...
随机推荐
- FCC---CSS Flexbox: Apply the flex-direction Property to Create a Column in the Tweet Embed
The tweet embed header and footer used the flex-direction property earlier with a row value. Similar ...
- 关于选用ccflow你所担心的问题都在这里为您解答
致ccflow客户 感谢大家ccbpm的认可,我们会一如既往的以踏实的技术来回应大家的支持. 针对大家疑问最多的几个问题,在这里我我为大家一一解答. 代码一直在更新,不稳定问题 版本控制我们做的差,是 ...
- ESP32的NVS使用指南
NVS总的来说,就是非易失性存储,类似MCU EEPROM,但实际上调用ESP32这些函数,数据是存储在FLASH中的. 它的管理方式类似数据库的表,在NVS里面可以存储很多个不同的表,每个表下面有不 ...
- Idea中Maven的安装
Maven 软件的下载 为了使用Maven 管理工具,我们首先要到官网去下载它的安装软件.通过百度搜索“Maven“, 点击Download 链接,就可以直接进入到Maven 软件的下载页面: 目前最 ...
- css实现内容不相同的左右两个div等高
问题提出 现在有两个div左右排列,但是两个div的内容不相同,如何设置两个div的css做到在两个div等高排列呢? 下面是网上找的3种实现方法,觉得很有代表性,所以索性收藏起来. 方法一 通过父元 ...
- 高级Java开发人员最常访问的几个网站
这是高级Java开发人员最常访问的几个网站. 这些网站提供新闻,一般问题或面试问题的答案,精彩的讲座等.质量是优秀网站的关键因素,这此网站都有较高的质量内容.下面逐一介绍: 1. Stackoverf ...
- NET Framework项目移植到NET Core上踩的坑(1)
本文章向大家介绍NET Framework项目移植到NET Core上遇到的一系列坑,主要包括NET Framework项目移植到NET Core上遇到的一系列坑使用实例.应用技巧.基本知识点总结和需 ...
- WPF 3D Cube及点击交互
在WPF中构建一个简单的立方体比较容易实现,可参考资料也比较众多.比较麻烦的是处理点击交互. 我在WPF中用两种方式实现了3DCube,效果图如下: 方式一: 最常见的3D内容构建模式,结构如下图. ...
- 天下代码一大抄,整个案例的搬是什么鬼!疑似冒充蚂蚁金服高级Java开发工程师?你大爷
写在开始 上班前的第一件事,就是码云看看有什么消息,回复下网友的问题.如果看到喜欢的项目会点进去瞅瞅,然后就开始一天的工作. 然而,这一天的工作并不开心,一个今日热门项目让自己很恼火,一开始感觉并没有 ...
- C#NULL条件运算符
C#6.0新增的特性 NULL条件运算符 ?. 之前我们在需要判断某个对象是否为空的是这样的 Person per = null; if (per != null) { Console.Write(& ...