剑指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 ...
随机推荐
- 综合5项百度大脑AI技术,快速构建智能交通方案
一.整体方案:思路:整合百度AI功能,通过百度AI解决.优化在公交运行过程中遇到的运营.管理.安全等方面的问题.具体如下: 安全方面:通过驾驶员检测+语音合成,对驾驶员状态进行实时检测,跟踪,告警. ...
- Sqlite—Python接口
#!/usr/bin/env python # -*- coding:utf-8 -*- import sqlite3,os,time import traceback class Sqlite(): ...
- web 自动化遇到 shadowDOM 节点你会操作吗?
本文转载自: http://www.lemfix.com/topics/971 近期有同学在做web自动化的时候,发现页面上有些元素,在selenium中无法通过xpath来定位,各种原因找了半天,都 ...
- 利用keras自带房价数据集进行房价预测
import numpy as np from keras.datasets import boston_housing from keras import layers from keras imp ...
- 【STM32H7教程】第34章 STM32H7的定时器应用之TIM1-TIM17的PWM实现
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第34章 STM32H7的定时器应用之TIM1-T ...
- Python学习:50 行 Python 代码,带你追到最心爱的人
程序员世纪难题 人们一提到程序员第一反应就是:我知道!他们工资很高啊!但大部分都是单身狗,不懂得幽默风趣,只是每天穿格子 polo 衫的宅男一个.甚至程序员自己也这样形容自己:钱多话少死的早.程序员总 ...
- UWP 记一次x64平台无法单步调试的bug
是这样的,平时开发uwp程序,都是用x86架构进行部署和调试.但是有时候需要在XBOX上进行调试,所以架构需要改成x64进行操作. 但是最近x64位下不能进行调试了. 搜遍网上的各种教程,也是各有各的 ...
- 【UR #6】懒癌
Problem Description 你绞尽脑汁也没有解开智商锁给的迷题,只见哐地一下门就开了:"您与锁的主人智商一致." 于是你们窃取了大量内部资料,最后端掉了 \(IIIS\ ...
- C# TreeView模糊查找节点
List<TreeNode> listSearchTreeNodes; private void btn_Search_Click(object sender, EventArgs e) ...
- 入职小白随笔之Android四大组件——广播详解(broadcast)
Broadcast 广播机制简介 Android中的广播主要可以分为两种类型:标准广播和有序广播. 标准广播:是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播 ...