1.题目

  • 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)

2.思路

  • 按说这个题目应该是很简单的,其实也很简单,但是感觉题目不是那么好理解
  • 值的注意的是:给出的第一个是压入序列,表示的是元素压入栈的先后顺序,并没有规定在压入的过程中不能出栈,所以第一个压栈序列对应的出栈序列是有很多种可能性的,而题目的意思也就是判断第二个给出的序列是不是出栈序列可能结果中的一个
  • 像序列4,5,3,2,1之所以是压栈序列1,2,3,4,5的一个出栈序列是因为,压栈过程为先1,2,3,4入栈,然后4出栈,再5入栈,再1,2,3,5出栈,则对应的出栈序列就是4,5,3,2,1.
  • 解题思路:设一个辅助栈,出栈序列元素分别和入栈序列顶元素对比,不相同的入栈序列元素放入辅助栈并被删除,相同时出栈序列顶元素出栈,入栈序列的元素不入辅助栈并被删除,继续拿出栈序列顶元素和入栈序列元素对比,直到入栈序列为空。再看出栈序列是不是辅助栈的出栈顺序,若是返回1不是返回0.

3.代码

class Solution {
public:bool IsPopOrder(vector<int> pushV,vector<int> popV) {stack<int> stack1;while(!pushV.empty()){if(pushV[0]!=popV[0]){stack1.push(pushV[0]);pushV.erase(pushV.begin());}if(pushV[0]==popV[0]){popV.erase(popV.begin());pushV.erase(pushV.begin());}}if(stack1.size()!=popV.size())return 0;for(auto i=0;i<popV.size();i++){if(popV[i]==stack1.top())stack1.pop();elsereturn 0;}return 1;}
};

剑指offer-21.栈的压入弹出序列相关推荐

  1. 剑指offer(21):栈的压入、弹出序列

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

  2. 【LeetCode】剑指 Offer 31. 栈的压入、弹出序列

    [LeetCode]剑指 Offer 31. 栈的压入.弹出序列 文章目录 [LeetCode]剑指 Offer 31. 栈的压入.弹出序列 package offer;import java.uti ...

  3. 【剑指offer-Java版】22栈的压入弹出序列

    栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...

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

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

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

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

  6. 剑指offer:栈的压入、弹出序列

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

  7. 剑指OFFER之栈的压入、弹出序列(九度OJ1366)

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

  8. 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)

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

  9. 《剑指offer》栈的压入、弹出序列

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

  10. java输出栈的弹出序列_剑指offer:栈的压入、弹出序列(Java)

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

最新文章

  1. (四)spring cloud微服务分布式云架构-配置中心和消息总线(配置中心终结版)...
  2. 腾讯云大数据产品中心总经理刘煜宏:企业全域数据体系建设(附完整PPT)
  3. Docker之Docker网络讲解
  4. jquery 当页面图片加载之后_在浏览器地址栏输入地址到页面渲染完成发生了什么?(下)...
  5. 有线电信服务全球市场:未来三年复合年增长率将放缓
  6. Android EditText 不得不说的InputFilter、TextWatcher、ActionMode.Callback、OnEditorActionListener
  7. 苹果CMS-v10系统标签
  8. python怎么打开cmd-python中调用cmd
  9. 易虎再谈网站被恶意刷流量和防恶意点击的解决思路
  10. win10换win7系统步骤操作详解分享
  11. 华为5500v3多路径linux6,使用Linux自带多路径multipath
  12. 论企业组织架构的扁平化管理
  13. python基础训练—数字
  14. MySQL8.0安装与基于二进制日志文件位置的主从复制
  15. ubuntu U盘只读的修复办法
  16. 基于rt-thread的udp客户端
  17. 2021Unity学习教程:本地下载的Unity项目怎么打开?
  18. java实现word文档转pdf功能(无水印)
  19. 湘潭大学计算机考研复试题,湘潭大学信息工程学院2019考研复试程序设计练习题...
  20. 【halcon 线扫相机二维码矫正算法】

热门文章

  1. bzoj 1685: [Usaco2005 Oct]Allowance 津贴(贪心)
  2. opencv 绘制图像轮廓
  3. Codeforces 1043F(容斥+dp)
  4. Java 面向对象 之 多态实例2
  5. 三大框架ssh整合(一)
  6. 数据降维之多维缩放MDS(Multiple Dimensional Scaling)
  7. callback的实现
  8. 现实JS模板,可设置默认值
  9. Unity3D吐槽2--AnimationEvent
  10. 提高网站性能的方法(学习笔记)