原创文章,转载请注明出处!

本题牛客网地址

博客文章索引地址

博客文章中代码的github地址

1.题目

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为第一个序列的出栈序列。注意:假设压栈序列的全部数字均不相等。

 例如:

序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:出栈序列和入栈序列相等)

2.思路

定义一个辅助栈和两个变量。把第一个序列中的数字依次压入辅助栈,并按照第二个序列的顺序依次从辅助栈中弹出数字。遍历完第一个序列后,如果辅助栈为空则表示出栈序列是入栈序列的弹出顺序。

举例:

    压栈序列1,2,3,4,5,判断序列4,5,3,2,1是否是压栈序列的出栈序列。

压栈序列1,2,3,4,5,判断序列4,3,5,1,2是否是压栈序列的出栈序列。

3.代码

class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV)
{
// 特殊输入(题干假设两个序列相等,并假设序列中数字不重复)
if(pushV.size()==0)
return false; // 辅助空间
stack<int> stk; // 循环判断
for(int i=0,int j =0;i<pushV.size();++i)
{
stk.push(pushV[i]);
while(!stk.empty() && stk.top() == popV[j])
{
stk.pop();
j++;
}
} // 判断栈是否为空
if(stk.empty())
return true;
else
return false;
}
};

  

【剑指offer】栈的压入弹出序列,C++实现(举例)的更多相关文章

  1. 剑指offer - 栈的压入弹出序列 - JavaScript

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 ...

  2. 剑指offer 栈的压入弹出 顺序

    判断: 如果下一个弹出的数字刚好是栈顶元素,那么直接弹出 如果下一个弹出的数字不在栈顶,我们要把压栈序列中,还没有入栈的数字压入辅助栈,知道把下一个需要弹出的数字压入栈顶 如果所有的数字都入栈,但是仍 ...

  3. 剑指Offer20 栈的压入弹出序列是否正确

    /************************************************************************* > File Name: 20_IsPopO ...

  4. 剑指Offer 栈的压入、弹出序列

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  5. 剑指offer——栈的压入、弹出序列

    题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个栈是否为该栈的弹出顺序.假设压入栈的所有数字都不相等.例如序列1,2,3,4,5是某个栈的压入顺序,序列4,5,3,2,1是该栈序列的一 ...

  6. 剑指offer 栈的压入和弹出

    题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...

  7. 用js刷剑指offer(栈的压入、弹出序列)

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

  8. 剑指offer-面试题22.栈的压入,弹出序列

    题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第 二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等. 例如序列1.2.3.4.5是某栈的压栈序列,序列4.5.3.2.1 是该压栈 ...

  9. 剑指offer--28.栈的压入、弹出序列

    时间限制:1秒 空间限制:32768K 热度指数:300132 本题知识点: 栈 算法知识视频讲解 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假 ...

随机推荐

  1. Spring Cloud OAuth2(二) 扩展登陆方式:账户密码登陆、 手机验证码登陆、 二维码扫码登陆

    概要 基于上文讲解的spring cloud 授权服务的搭建,本文扩展了spring security 的登陆方式,增加手机验证码登陆.二维码登陆. 主要实现方式为使用自定义filter. Authe ...

  2. spark(二)优化思路

    优化思路 内存优化 内存优化大概分为三个方向 1.所有对象的总内存(包括数据和java对象) 2.访问这些对象的开销 3.垃圾回收的开销 其中Java的原生对象往往都能被很快的访问,但是会多占据2-5 ...

  3. HDU5324 cqd分治

    HDU5324 cqd分治 标签(空格分隔): 未分类 给你两个长度相同数列,求第一个不上升,第二个不下降的最长子序列长度. 这里要求的子序列对第一个和第二个来说是相同的.即如果你在第一个序列里选了第 ...

  4. SpringBoot 玩转读写分离

    环境概览 前言介绍 Sharding-JDBC是当当网的一个开源项目,只需引入jar即可轻松实现读写分离与分库分表.与MyCat不同的是,Sharding-JDBC致力于提供轻量级的服务框架,无需额外 ...

  5. 关于java.lang.Exception:No tests found matching的一系列解决方法

    问题描述: java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=yahaa], {ExactMatcher ...

  6. Centos服务器被挂马的一次抓马经历

    转载:http://blog.csdn.net/qq_21439971/article/details/54631440 今天早上五点,收到监控宝的警告短信,说是网站M无法访问了.睡的正香,再说网站所 ...

  7. 最新Dubbo-admin+Zookeeper搭建

    Zookeeper搭建: 下载zookeeper压缩包并解压,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/进入conf目录下将 zoo_sa ...

  8. 第六天 文件的基本管理和xfs文进系统备份恢复

    1.1 Linux系统目录结构,相对路径/绝对路径 1.1.1 Linux系统目录结构 在linux系统中一切都是文件 / 根目录,一切的起点,就像是一个树杈一样,他是所有叉的根 /bin 在单用户模 ...

  9. UVA-11324 The Largest Clique (强连通+DP)

    题目大意:在一张无向图中,最大的节点集使得集合内任意两个节点都能到达对方. 题目分析:找出所有的强连通分量,将每一个分量视作大节点,则原图变成了一张DAG.将每个分量中的节点个数作为节点权值,题目便转 ...

  10. Python内置函数详解-总结篇

    参考链接:http://www.cnblogs.com/sesshoumaru/p/6140987.html