题意:

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

解题思路:

引入辅助栈,把压入栈序列的数字依次压入辅助栈,并按照弹出序列依次弹出。有三种情况:

  1. 如果辅助栈的栈顶等于下一个弹出的数字,则直接弹出;
  2. 辅助栈的栈顶不等于下一个弹出的数字,则把将压入序列还没入栈的数字压入辅助栈,直到下一个需要弹出的数字压入栈顶为止;
  3. 如果所有数字入栈且没有找到下一个弹出的数字则该弹出序列不可能存在。
class Solution {
public:bool IsPopOrder(vector<int> pushV,vector<int> popV) {if(pushV.size()==0 || popV.size()==0){return false;}stack<int> datatmp;int pushi=0;int popi=0;while(popi<popV.size()){// 遍历弹出序列// 如果辅助栈为空,或者辅助栈的栈顶不等于下一个弹出的数字,则将压入序列还没入栈的数字压入辅助栈while(datatmp.size()==0 || datatmp.top()!=popV[popi]){// 如果压入栈序列为空则停止if(pushi>pushV.size()-1){break;}datatmp.push(pushV[pushi]);pushi++;}// 如果所有数字入栈,但辅助栈的栈顶不等于下一个弹出的数字,则返回错误if(datatmp.top()!=popV[popi]){break;}// 辅助栈的栈顶等于下一个弹出的数字datatmp.pop();popi++;}if(datatmp.empty()){return true;}else{return false;}}
};

剑指offer22:栈的压入、弹出序列相关推荐

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

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

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

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

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

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

  4. python 栈的压入弹出序列

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

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

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

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

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

  7. 2021-07-22剑指offer31.栈的压入、弹出序列

    将pushed数组中的数字压入栈中 用一个指针指向popped序列中的数字 栈中的数字与指针指向的数字相同,就将栈顶的数字弹出, 指针移动到下一位数字比较, 如果不相同,指针不移动,栈顶继续放入. c ...

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

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

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

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

最新文章

  1. [原创]SparkR针对mysql的数据读写操作实现
  2. Android系统分区理解及分区目录细解
  3. nacos 公共_SpringCloud配合注册中心Nacos的使用
  4. matlab安装m_map,MATLAB中安装m_map后不能用,求解
  5. Building Roads(POJ-3625)
  6. Android官方api的下载
  7. 我的程序员之路(4)——工作半年
  8. Android中Text文本特效处理
  9. LeetCode10 Regular Expression Matching
  10. Socket.io 的 emit
  11. php试卷分析,试卷分析常用统计指标
  12. 停止SHA1算法签名证书及时间戳服务尤其是代码签名证书,补丁介绍
  13. 高仿美团iOS版,版本号5.7
  14. 2022年末最新最全Java学习路线,结合工作经验和培训机构整理
  15. C语言提高篇之——动态内存管理
  16. python qrcode 库的使用
  17. 【51单片机】:智能台灯设计(自动、手动双模式)
  18. 工作中对数据分析思路的一点思考
  19. c++ 操作hadoop
  20. 在WPS的PPT中添加高亮代码(非插入图片)

热门文章

  1. 入围教育装备展“金奖产品”,升腾威讯云学区做真正教育桌面云
  2. Paypal支付的退款refund之getAccessToken
  3. 为ubuntu操作系统增加root用户
  4. 获取每个月最后一天的小技巧
  5. 《C语言及程序设计》实践参考——水仙花数
  6. docker 主机ip_docker容器指定ip
  7. neo4j图形数据库JAVA实现
  8. 黄铁军:沉迷于寻求通用智能理论,将是阻碍 AI 发展的最大障碍 | Yann LeCun 自传《科学之路》序...
  9. 破除SCI至上!评价 AI 科研成果,需要新思路【附报告下载】
  10. 新书 5 折腰斩!畅销技术类图书推荐