栈的压入、弹出序列

news/2024/10/22 9:41:58/

⭐️ 题目描述

在这里插入图片描述


🌟 OJ链接:栈的压入、弹出序列

思路: 我们使用一个栈来模拟题目所给的压入、和弹出序列,若模拟成功则是真,模拟失败返回假。我们可以每次先从 pushV 入栈一个元素,在判断当前栈顶元素和 popV 当前元素相等,若相等则出栈,需要注意的是有可能是连续出栈,所以这里需要使用循环来判断。
  假设入栈序列和出栈序列是:[1 2 3 4 5] [4 , 5 , 3 , 2 , 1] stack => {1 , 2 , 3 , 4} 当栈入到 4 的时候与 popV 的第一个元素相等所以出栈,stack => {1 , 2 , 3} 循环继续比较为假,下一次入栈 stack => {1 , 2 , 3 , 5} 在依次循环比较后面的元素就都消了,所以如果是相等序列最后栈一定为空,若不是相同序列则栈不为空。

代码:

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pushV int整型vector * @param popV int整型vector * @return bool布尔型*/bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {int push_i = 0;int pop_i = 0;// 用栈来模拟 压入和弹出stack<int> imitate_stack;while (push_i < pushV.size()) {imitate_stack.push(pushV[push_i++]);    // 入栈// 检查是否和 popV 的元素相等 相等则是出栈// 而出栈的可能是连续出栈 所以使用 while 循环// 这里判断相等的时候 要考虑 pop_i 是否已经越界 且栈不为空的情况while (!imitate_stack.empty() && pop_i < popV.size() && imitate_stack.top() == popV[pop_i]) {imitate_stack.pop();pop_i++;}}// 若栈中还有元素则不是栈的弹出序列// 若栈中没有元素则是栈的弹出序列return imitate_stack.empty();}
};


http://www.ppmy.cn/news/1099106.html

相关文章

使用 crontab 定时任务使用 curl 发送请求

crontab 简单用法 crontab 一般是 linux 系统自带的 输入以下命令可以添加定时任务&#xff0c;里面有 crontab 的说明及示例 crontab -e示例格式如下 # 前面五个分别代表分、时、天、月、周&#xff0c;后面就是命令 * * * * * command例如 * * * * * command就是每分钟执行…

C动态分配

动态分布与静态发布&#xff1a; 静态分配 1、 在程序编译或运行过程中&#xff0c;按事先规定大小分配内存空间的分配方式。int a [10] 2、 必须事先知道所需空间的大小。 3、 分配在栈区或全局变量区&#xff0c;一般以数组的形式。 4、 按计划分配。 动态分配 1、在程序运…

B Antiamuny wants to leaern binary search again

题目&#xff1a; C/C: int f(int l,int r,int x) { // l < x < rint cnt 0;while(l < r) {cnt;int mid (l r) / 2;if (mid x) break;if (mid < x) l mid 1;else r mid - 1;}return cnt; } 样例&#xff1a; 输入 5 3 7 2 6 12 2 2 10 3 6 14 8 5 8 1 输…

vue3+ts 分享海报

安装依赖1. npm install html2canvas --save<div class"flex-box"><div><div v-for"(item,index ) in from.list" :key"index" click"actvieFuntion(index)"><div>{{item}}</div><div :class"…

Revit SDK 介绍:PrintLog 打印日志

前言 这个例子介绍了如何使用打印相关的事件。 内容 事件机制也是老生常谈了&#xff0c;Revit 提供了大量的可供注册的事件&#xff1a;Revit API&#xff1a;Events 事件总览 注册和 print 相关的事件&#xff1a; // IExternalApplication.OnStartup m_eventsReactor …

单片机电子元器件-按键

电子元器件 按键上有 四个引脚 1 2 、 3 4 按下之后 导通 1 3 、 2 4 初始导通 通常按键开关为机械弹性开关&#xff0c;开关在闭合不会马上稳定的接通&#xff0c;会有一连串的抖动 抖动时间的长短有机械特性来决定的&#xff0c;一般为5ms 到10 ms 。 消抖的分类 硬件消…

深浅拷贝与赋值

数据类型 数据类型 在JavaScript中&#xff0c;数据类型有两大类。一类是基本数据类型&#xff0c;一类是引用数据类型。 基本数据类型有六种&#xff1a;number、string、boolean、null、undefined、symbol。 基本数据类型存放在栈中。存放在栈中的数据具有数据大小确定&a…

【Python 程序设计】Python 中的类型提示【06/8】

目录 一、说明 二、什么是动态类型&#xff1f; 2.1 为什么要使用类型提示&#xff1f; 2.2 局限性 三、基本类型提示 3.1 声明变量的类型 3.2 函数注释 四、Python 中的内置类型 4.1 原子类型与复合类型 五、函数注释 5.1 如何指定函数的参数类型和返回类型 5.2 在函数签名中…