题目描述

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

解题思路:

入栈的顺序如第一个序列。

栈的弹出顺序有多种。

让弹出栈的元素和第二个序列的元素匹配,若不匹配可以一直压入辅助栈,直到遇到相同的;

若最后辅助栈内依然有值没有出栈,说明了第二个序列中依然有元素没有匹配完。也就是说第二个序列不可能为该栈的弹出序列。

class Solution {
public:bool IsPopOrder(vector<int> pushV,vector<int> popV) {if(pushV.size() == 0) return false;//压入序列vector<int> stack;//定义一个辅助栈for(int i = 0,j = 0 ;i < pushV.size();){stack.push_back(pushV[i++]);//栈的末尾添加元素  i累加之前//将原序列压入辅助栈 压入的个数取决于弹出序列==辅助栈的末尾元素while(j < popV.size() && stack.back() == popV[j]){stack.pop_back();//辅助栈出栈j++;}      }return stack.empty();//若辅助栈为空,说明第二个序列为该栈的弹出序列 }
};

参考:https://www.nowcoder.com/profile/8709341/codeBookDetail?submissionId=17099336

29、栈的压入、弹出序列相关推荐

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

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

  2. 数据结构与算法--举例分析法- 栈的压入弹出序列

    举例分析 与上两篇问中画图方法一样,我们可以用举例模拟的方法思考分析复杂问题.当一眼不能看出问题的规律的时候,我们可以用几个具体的例子来模拟一下问题的过程.这样就和我们在程序出现问题时候的debug一 ...

  3. 剑指offer-21.栈的压入弹出序列

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

  4. python 栈的压入弹出序列

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

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

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

  6. 剑指Offer(Java实现)栈的压入、弹出序列

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

  7. 剑指Offer--022-栈的压入、弹出序列

    链接 牛客OJ:栈的压入.弹出序列 九度OJ:http://ac.jobdu.com/problem.php?pid=1366 GitHub代码: 022-栈的压入弹出序列 CSDN题解:剑指Offe ...

  8. 【面试题22】栈的压入、弹出序列

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

  9. 剑指offer22:栈的压入、弹出序列

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

最新文章

  1. Android Navigation Drawer(导航抽屉)
  2. Boost:bimap双图项目的测试程序
  3. 让你更好使用Vista的设置技巧
  4. leetcode 241. Different Ways to Add Parentheses | 241. 为运算表达式设计优先级(Java)
  5. 人工智能工程师需具备的技能_2020年软件测试工程师需要具备的技能--需要学什么--面试题有哪些(灵魂拷问)...
  6. es6 TypedArray视图
  7. codeforces 653D D. Delivery Bears(二分+网络流)
  8. 开始学习Linux的一些建议
  9. 成都互联网公司和生活成本
  10. linux下一个能显示IP来源的小工具-nali
  11. win7升级win10正式版_如何使用小白系统对win7升级win10操作
  12. Noya批量加解密工具使用方法
  13. Python学习-if语句
  14. python 编写正三角形,倒三角和菱形和各种镂空菱形
  15. 二层交换机、三层交换机及四层交换机的区别
  16. python兔子_python 实现兔子生兔子示例
  17. Android音频混响特效的设置
  18. python 热度图_keras CNN卷积核可视化,热度图教程
  19. VS2017,MFC对WPS下Excel表格的操作
  20. (三)腾讯云开发工程师TCA题库(题目含详细解析)

热门文章

  1. TF2目标检测API
  2. 不可见字符​​​“​\u200b“的坑
  3. 为何企业招聘越来越重视员工背景调查?
  4. 《白话深度学习与Tensorflow》学习笔记(7)RBM限制玻尔兹曼机
  5. week_03_常用类以及接口
  6. 《乌合之众--大众心理研究》读书笔记
  7. 汇率转换(HTML+CSS+JS 附源码)
  8. 男人婚前婚后的两张脸
  9. 哪里可以找到原版经济学人?为什么读经济学人?
  10. 唯品会价值论:新模式电商发力“小而美”