当前位置: 首页 > news >正文

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

题目

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

1. 0<=pushV.length == popV.length <=1000

2. -1000<=pushV[i]<=1000

3. pushV 的所有数字均不相同

示例1

输入:[1,2,3,4,5],[4,5,3,2,1]

返回值:true

说明:可以通过push(1)=>push(2)=>push(3)=>push(4)=>pop()=>push(5)=>pop()=>pop()=>pop()=>pop() 这样的顺序得到[4,5,3,2,1]这个序列,返回true

示例2

输入:[1,2,3,4,5],[4,3,5,1,2]

返回值:false

说明:由于是[1,2,3,4,5]的压入顺序,[4,3,5,1,2]的弹出顺序,要求4,3,5必须在1,2前压入,且1,2不能弹出,但是这样压入的顺序,1又不能在2之前弹出,所以无法形成的,返回false

解答

源代码

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pushV int整型一维数组 * @param popV int整型一维数组 * @return bool布尔型*/public boolean IsPopOrder (int[] pushV, int[] popV) {// write code hereint len = pushV.length;Deque<Integer> stack = new ArrayDeque<>();// 遍历入栈数组的下标int j = 0;// 遍历出栈数组的下标for (int i = 0; i < len; i++) {while (j < len && (stack.isEmpty()||stack.peekLast() != popV[i])) {stack.offerLast(pushV[j]);j++;}if (stack.peekLast() == popV[i]) {stack.pollLast();} else {return false;}}return true;}
}

总结

用两个变量记录入栈和出栈数组的下标,维护一个临时栈来演示入栈、弹出的顺序,如果做得到就返回true,否则返回true。

http://www.lryc.cn/news/198237.html

相关文章:

  • Linux设置开机自启动奇安信可信浏览器,并配置默认页面
  • flink1.15 异步维表Join 用于外部数据访问的异步 I/O scala版本
  • Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
  • 微信小程序之会议OA系统首页布局搭建与Mock数据交互
  • 动态规划解股票类型
  • 前端用 js-file-download组件下载后端返回的pdf,word,excel文件
  • Mac硬盘检测工具
  • 一篇文章解密如何轻松实现移动应用的电子和手绘PDF签名功能!
  • 【大数据】Kafka 入门简介
  • Unity可视化Shader工具ASE介绍——8、UI类型的特效Shader编写
  • 科学指南针XPS | SEM | BET 降价:不赚钱,就和您交个朋友
  • nginx正反向代理,负载均衡
  • 物联网中的MQTT协议总结
  • 断点续传的原理和实现
  • 【小黑嵌入式系统第二课】嵌入式系统的概述(二)——外围设备、处理器、ARM、操作系统
  • Unity3D 在做性能优化时怎么准确判断是内存、CPU、GPU瓶颈详解
  • pyqt5 QProgressDialog 进度条的使用 下载自动更新应用程序
  • 【yolov5目标检测】使用yolov5训练自己的训练集
  • 出差学小白知识No5:ubuntu连接开发板|上传源码包|板端运行的环境部署
  • C++(初阶四)类和对象
  • CSS餐厅练习链接及答案
  • 嵌入式和 Java选哪个?
  • 创建带Axi_Lite接口的IP核与AXI Interconnect(PG059)
  • 快速解决 Resource not accessible by integration
  • 港联证券:资金融通构成强支撑 “一带一路”金融合作开新局
  • mysql varchar int
  • 阿里云/腾讯云国际站账号:私服游戏服务器:阿里云CTO周靖人:AI时代,为什么阿里云一定要做开源
  • 搭建Pytorch的GPU环境超详细
  • ppt录屏怎么导出来?学会这个,让分享更容易
  • 【Linux笔记】Linux基础权限