【算法专题--栈】栈的压入、弹出序列 -- 高频面试题(图文详解,小白一看就懂!!)

目录

一、前言

二、题目描述   

三、解题方法  

 💧栈模拟法💧-- 双指针

⭐ 解题思路

⭐ 案例图解

四、总结与提炼  

五、共勉  


一、前言

        栈的压入、弹出序列 这道题,可以说是--栈专题--,最经典的一道题,也是在面试中频率最高的一道题目,通常在面试中,面试官可能会从多个方面考察这道题目,所以大家需要对这道题目非常熟悉哦!!
       本片博客就来详细的讲讲解一下 栈的压入、弹出序列 的实现方法,让我们的面试变的更加顺利!!! 

二、题目描述   

题目链接: 栈的压入、弹出序列_牛客题霸_牛客网 (nowcoder.com)

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出序列
假设压入栈的所有数字均不相等。

例如:序列{1,2,3,4,5}是某栈的压栈序列,序列{4,5,3,2,1}是该压栈序列对应的一个弹出序列,但{4,3,5,1,2}就不可能是该压栈序列的弹出序列。 

三、解题方法  

 💧栈模拟法💧-- 双指针

解决该问题需要借助一个辅助栈,把输入的第一个序列中的数字依次入栈并按照第二个序列的顺序依次从该栈中弹出数字。 


⭐ 解题思路

开始: 

入栈 序列 当前的数据 入栈

栈顶元素出栈序列比较是否相等

  • 相等,栈顶元素出栈,出栈序列 指针向后移动
  • 不相等,入栈序列继续入栈  

结束判断: 

  • 出栈序列走到尾部,说明完全匹配
  • 栈顶元素和出栈序列匹配不上,且入栈序列已经走完了,没有数据可以入栈了 

⭐ 案例图解

 入栈序列:【1,2,3,4,5】              出栈序列:【4,5,3,2,1】

  • 开始入栈,进行比较

  •  当 栈顶元素【4】 和 出栈序列【4】相等 ,【4】出栈,pop指针向后移动

  •  开始进行逐一匹配

  •  直到,辅助栈 为空结束!!

代码:

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pushV int整型vector * @param popV int整型vector * @return bool布尔型*/bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {// 创建一个 栈stack<int> st;// 建立两个下标指针,一个用来指向当前的入栈序列,一个用来指向的出栈序列int pushi = 0, popi = 0;// 开始入栈 , 当入栈 序列 走完结束while(pushi < pushV.size()){st.push(pushV[pushi++]);   // 入栈// 进行入栈序列 和 出栈序列 进行匹配// 当栈不能为空,或者 ,进行栈顶 和 出栈序列成功匹配while(!st.empty() && st.top() == popV[popi]){// 当匹配成功时st.pop();popi++;} }return popi == popV.size();}
};

 四、总结与提炼  

        最后我们来总结一下本文所介绍的内容,本文讲解了一道牛客中有关 栈的压入、弹出序列的题目,这道题目是校招笔试面试中有关链表章节非常高频的一道题目大家下去一定要自己再画画图,分析一下,把这段代码逻辑自己实现一遍,才能更好地掌握  

五、共勉  

以下就是我对 栈的压入、弹出序列 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对 栈专题 的理解,请持续关注我哦!!!   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端通过ResizeObserver来监听dom大小动态渲染echarts

export const GlobalResizeObserver (function () {const ATTR_NAME global-resizeobserver-keyconst attrValueToCallback {}function antiShake(fn, delay, immediate false) {let timer null//不能用箭头函数return function () {//在时间内重复调用的时候需要清空之前…

Java 实现将List按照字符串(特定规则)排序

日常开发中我们通常会遇到将一个List按照特定的规则排序&#xff0c;例如我们需要将一个List按照 “广州市”, “深圳市”, “珠海市”, “汕头市” 的顺序排序&#xff0c;我们可以使用下述方式实现。 City实体类 import lombok.AllArgsConstructor; import lombok.Data; im…

如何使用飞书快捷指令无感记账,ios版

总结 很多人无法长期坚持记账&#xff0c;主要是每次消费需要打开手机软件&#xff0c;一系列繁琐的操作&#xff0c;导致过程中可能就忘了。 今天给大家带来飞书自动记账。 演示视频 点击查看&#xff1a;https://www.douyin.com/video/7312857946382241063 安装 下载快捷…

hive调优原理详解:案例解析参数配置(第17天)

系列文章目录 一、Hive常问面试函数&#xff08;掌握&#xff09; 二、Hive调优如何配置&#xff08;重点&#xff09; 文章目录 系列文章目录前言一、Hive函数&#xff08;掌握&#xff09;11、JSON数据处理12、炸裂函数13、高频面试题13.1 行转列13.2 列转行 14、开窗函数&a…

Vue2 基础八电商后台管理项目——中

代码下载 商品分类页 新商品分类组件 goods/Cate.vue&#xff0c;在router.js中导入子级路由组件 Cate.vue&#xff0c;并设置路由规则。 绘制商品分类基本结构 在Cate.vue组件中添加面包屑导航以及卡片视图中的添加分类按钮&#xff1a; <template><div><…

AcWing算法基础课笔记——记忆化搜索:滑雪

记忆化搜索 1. 滑雪 题目 题目描述&#xff1a; 给定一个R行C列的矩阵&#xff0c;表示一个矩形网格滑雪场。 矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。 一个人从滑雪场中的某个区域内出发&#xff0c;每次可以向上下左右任意一个方向滑动一个单位…

常用word文档格式

1.字体要求 中文&#xff1a;宋体 英文&#xff1a;Times New Roman 2.标题 主标题&#xff1a;二号或小二号&#xff0c;居中&#xff0c;不加粗 副标题&#xff1a;三号&#xff0c;不加粗 三级标题&#xff1a;小三号&#xff0c;不加粗 3.修订记录 excel格式&#xff…

mac Canon打印机连接教程

官网下载安装驱动&#xff1a; 选择打印机类型和mac系统型号下载即可 Mac PS 打印机驱动程序 双击安装 系统偏好设置 点击“”添加&#xff1a; OK可打印玩耍&#xff01;&#xff01; 备注&#xff1a; 若需扫描&#xff0c;下载扫描程序&#xff1a; 备注&#xff1a;…

禁止浏览器对input的自动填充和填充提示(适用于谷歌、火狐、Edge(原IE浏览器)等常见浏览器)

目录 1.要解决的问题2.一技能&#xff1a;原生属性&#xff0c;小试牛刀3.二技能&#xff1a;傀儡input&#xff0c;瞒天过海4.三技能&#xff1a;JavaScript出击&#xff0c;直接开大5.九九八十一难&#xff0c;永远还有最后一难 写在前面&#xff1a; 如有转载&#xff0c;务…

JavaScript小记_js的数据类型与判定

一、数据类型&#xff08;8种&#xff09; 基本数据类型&#xff1a;number string Boolean undefined null symbol bigint引用数据类型&#xff1a;object &#xff08;array function &#xff09; 二、区分数据类型 1、typeof 通常用来判断基本数据类型&#xff0c;它返…

ElasticSearch 和 MySQL的区别

MySQLElasticSearch 数据库&#xff08;database&#xff09;索引&#xff08;index&#xff09;数据表&#xff08;table&#xff09; 类型&#xff08;type&#xff09; 记录文档&#xff08;document&#xff0c;json格式&#xff09; 一、ES基础命令 1. ES cat查询命令 2.…

【proteus经典实战】显示温度和电压测量值在一个LCD屏幕上

一、简介 为基于微控制器的系统设计的&#xff0c;旨在实现温度和电压的实时测量并将结果显示在LCD屏幕上。核心部件包括DS1621数字温度传感器和MAX1241 A/D转换器&#xff1a;DS1621用于温度测量&#xff0c;而MAX1241则负责电压测量。通过精确读取这些传感器的数据&#xff0…

如何用一个二维码实现企业固定资产管理?

固定资产管理中普遍存在盘点难、家底不清、账实不一致、权责不清晰等问题。如果平时不规范化执行&#xff0c;年终面对上上下下、大大小小、成百上千件物资要进行盘点整理的时候&#xff0c;会是十分痛苦且低效的事情。 今天这篇文章就来给大家推荐几家便宜好用的二维码固定资…

动态人物抠图换背景 MediaPipe

pip下载 MediaPipe pip install mediapipe -i 手部特征点模型包包含一个手掌检测模型和一个手部特征点检测模型。手掌检测模型在输入图片中定位手部&#xff0c;手部特征点检测模型可识别手掌检测模型定义的被剪裁手掌图片上的特定手部特征点。 由于运行手掌检测模型非常耗时&…

商务英语培训柯桥外语学校生活口语“Rose”是玫瑰,那“Under the rose”是“玫瑰之下”?

最近&#xff0c;《玫瑰的故事》很火&#xff0c;女主角在剧中也经常收到黄色的玫瑰花。玫瑰花常常与爱情、美丽和浪漫相关&#xff0c;今天一起跟着英语君学习玫瑰花的俚语吧。 Under the rose 意思&#xff1a;私下地、秘密地或隐秘地。来自拉丁语短语sub-rosa&#xff0c;它…

k8s架构设计思想

1.谷歌borg云计算管理平台 一类&#xff1a;infrastucture platform software 另一类&#xff1a;borg为主的非虚拟化技术&#xff0c;调度进程 核心是轻量级作业调度&#xff0c;不是做虚拟化/云平台的 borg本身用了一些容器技术 生产业务product workload要求高可用&#xf…

Maven - 在没有网络的情况下强制使用本地jar包

文章目录 问题解决思路解决办法删除 _remote.repositories 文件代码手动操作步骤验证 问题 非互联网环境&#xff0c;无法从中央仓库or镜像里拉取jar包。 服务器上搭建了一套Nexus私服。 Nexus私服故障&#xff0c;无法连接。 工程里新增了一个Jar的依赖&#xff0c; 本地仓…

CesiumJS【Basic】- #024 加载webm文件(Primitive方式)

文章目录 加载webm文件(Primitive方式)1 目标2 代码2.1 main.ts3 资源文件4 其他加载webm文件(Primitive方式) 1 目标 使用Primitive方式加载webm文件 2 代码 2.1 main.ts /** @Author: alan.lau* @Date: 2024-06-16 11:15:48* @LastEditTime: 2024-06-16 11:43:02* @…

【linux/shell案例实战】Linux/shell教程实战技巧案例汇总

一.shell相关技巧 提取数据常用的各种小技巧 shell提取文件中指定两个关键字之间的内容 忽略函数中某一步执行过程 shell中按行和按列追加文件内容 shell使用echo输出空行与空格 使用bc命令实现小数数值计算 二.awk相关技巧 awk中FS和OFS的常规使用 awk替换文本字段&a…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于改进目标级联分析法的交直流混联系统发电-备用分布式协同调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…