数据结构 单调栈

news2024/11/24 2:42:43

应用情景

求当前元素 前面/后面,第一个比它 小/大 的元素的 值/下标/下标距离

优点

剔除重复寻路操作,将暴力 O(n^2) 优化到 O(n)

性质

从栈底开始,元素 单调递增/单调递减

单调性视具体情景而定 (找较大值还是较小值、找的方向)

思路

以某种形式存放遍历过的元素,使该种存放形式符合情景要求

讨论当前元素与栈顶元素比较大小后的几种情况分别对应什么操作

实现

按遍历顺序生成结果:

1.存放每一个遍历过的元素 (写在循环体最后)

2.对于当前元素,要知道有没有比它 大/小 的,就从栈顶向下找,不满足条件的直接出栈

因为对于之后还没遍历到的元素,栈顶不满足条件的元素和当前元素相比

一定劣于当前元素,不会再用到了

3.经历过 2. 之后,当前栈一定符合条件:若栈为空,则没有元素比当前元素更 小/大

若栈非空,则栈顶元素一定是第一个比当前元素 小/大 的

按其他顺序生成结果:略 (我遇到的题目都是按遍历顺序生成结果更优)

注意事项

注意讨论遍历方向,有时反着遍历,思路和代码更简洁

栈中元素有时候需要存数值,有时候要存下标,视题目要求而定

例题

LeetCode.739.每日温度

题目与题解:

题解 力扣 LeetCode 739 每日温度 C++-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/qwq_ovo_pwp/article/details/143243618?spm=1001.2014.3001.5501

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

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

相关文章

提升数据处理效率:TDengine S3 的最佳实践与应用

在当今数据驱动的时代,如何高效地存储与处理海量数据成为了企业面临的一大挑战。为了解决这一问题,我们在 TDengine 3.2.2.0 首次发布了企业级功能 S3 存储。这一功能经历多个版本的迭代与完善后,逐渐发展成为一个全面和高效的解决方案。 S3…

语音提示器-WT3000A离在线TTS方案-打破语种限制/AI对话多功能支持

前言: TTS(Text To Speech )技术作为智能语音领域的重要组成部分,能够将文本信息转化为逼真的语音输出,为各类硬件设备提供便捷的语音提示服务。本方案正是基于唯创知音的离在线TTS(离线本地音乐播放与在线…

【TFR-Net】基于transformer的鲁棒多模态情感分析特征重构网络

代码地址:TFR-Net/models at main thuiar/TFR-Net GitHub abstract: 提高对数据缺失的鲁棒性已经成为多模态情感分析(MSA)的核心挑战之一,MSA旨在从语言、视觉和声学信号中判断说话者的情感。在目前的研究中&#…

k3s 管理界面kuboard

一、登录kuboard 执行的内容&#xff1a; cat << EOF > kuboard-create-token.yaml --- apiVersion: v1 kind: Namespace metadata:name: kuboard--- apiVersion: v1 kind: ServiceAccount metadata:name: kuboard-adminnamespace: kuboard--- apiVersion: rbac.auth…

linux中级wed服务器(https搭建加密服务器)

一。非对称加密算法&#xff1a; 公钥&#xff1a;公共密钥&#xff0c;开放 私钥&#xff1a;私有密钥&#xff0c;保密 1.发送方用自己的公钥加密&#xff0c;接受方用发送方的私钥解密&#xff1a;不可行 2.发送方用接受方的公钥加密&#xff0c;接受方用自己的私钥解密…

YOLOv8_ ByteTrack目标跟踪、模型部署

YOLOv8目前支持BoT-SORT和ByteTrack两种多目标跟踪算法&#xff0c;默认的目标跟踪算法为BoT-SORT 如果要使用ByteTrack跟踪算法&#xff0c;可以添加命令行参数trackerbytetrack.yaml 一、 VisDrone2019数据集 VisDrone&#xff1a;无人机目标检测和追踪基准数据集。&#x…

CR6609 刷机

如果要刷openwrt&#xff0c;必须用pb-boot&#xff0c;如果用breed&#xff0c;会进不了系统。 刷了breed的话&#xff0c;可以在breed改刷pb-boot&#xff0c;在bootloader那里选择pb-boot的固件上传更新即可 固件更新----选择Bootloader----上传pb-boot文件----选择自动重…

我们可以用微服务创建状态机吗?

大家好&#xff0c;我是锋哥。今天分享关于【我们可以用微服务创建状态机吗&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 我们可以用微服务创建状态机吗&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 是的&#xff0c;微服务架构可…

Qt之hello world

目录 图形化的方式 使用QLabel 使用编辑框 使用按钮 纯代码的方式 使用QLabel 使用编辑框 使用按钮 关于对象树 观察现象 Qt的常用知识 快捷键 使用帮助文档 Qt 窗口体系 我们最开始学习语言时&#xff0c;第一个接触的知识就是输出字符串 "hello world&quo…

10分钟使用Strapi(无头CMS)生成基于Node.js的API接口,告别繁琐开发,保姆级教程,持续更新中。

一、什么是Strapi&#xff1f; Strapi 是一个开源的无头&#xff08;headless&#xff09; CMS&#xff0c;开发者可以自由选择他们喜欢的开发工具和框架&#xff0c;内容编辑人员使用自有的应用程序来管理和分发他们的内容。得益于插件系统&#xff0c;Strapi 是一个灵活的 C…

【微服务】Java 对接飞书多维表格使用详解

目录 一、前言 二、前置操作 2.1 开通企业飞书账户 2.2 确保账户具备多维表操作权限 2.3 创建一张测试用的多维表 2.4 获取飞书开放平台文档 2.5 获取Java SDK 三、应用App相关操作 3.1 创建应用过程 3.2 应用发布过程 3.3 应用添加操作权限 四、多维表应用授权操作…

国家能源集团携手海康威视研发攻克融合光谱煤质快检技术

10月24日&#xff0c;在国家能源集团准能集团黑岱沟露天煤矿&#xff0c;安装于准能选煤厂785商品煤胶带机中部的煤质快检核心设备&#xff0c;正在对当天装车外运的商品煤煤质进行实时检测。仅两分钟后&#xff0c;涵盖发热量、水分、灰分、硫分等多项指标的数据信息已传输到到…

jupyter界面修改成中文教程

在系统变量里面增加一个变量名&#xff1a;LANG 变量值&#xff1a;zh_ CN.UTF8 成功修改成为中文

修改huggingface的缓存目录以及镜像源

执行以下语句查看当前配置 huggingface-cli env默认输出应该如下 (py39-transformers) PS D:\py_project\transformers_demo> huggingface-cli envCopy-and-paste the text below in your GitHub issue.- huggingface_hub version: 0.26.1 - Platform: Windows-10-10.0.22…

Docker 镜像下载问题及解决办法

Docker 镜像下载问题及解决办法 我在杂乱的、破旧的村庄寂寞地走过漫长的雨季&#xff0c;将我年少的眼光从晦暗的日子里打捞出来的是一棵棵开花的树&#xff0c;它们以一串串卓然不俗的花擦明了我的眼睛&#xff0c;也洗净了我的灵魂。 引言 在使用 Docker 时&#xff0c;用户…

Catalan数 C++解决

输入描述 输入一个正整数n。 输出描述 输出Catalan数的前n项。 用例输入 1 0 用例输出 1 1 用例输入 2 5 用例输出 2 1 1 2 5 14 42 #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;int dp[n1]{0};dp[0]dp[1]1;for(int m2;…

使用TeamViewer远程局域网内的两台电脑

有个场景&#xff0c;有人还不知道TV可以局域网操作&#xff0c;记录一下。 主要就是修改设置&#xff0c;将取消激活改为接受 然后输入受控端的ip即可

CryoEM - 冷冻电镜 基于深度学习的 从头重构(Ab-initio Reconstruction) 开源项目 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/143162494 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 来源于 CryoDragon 算法 冷冻电镜(CryoEM) 是一种成像方式,为蛋白质和…

【人工智能】——matplotlib教程

文章目录 1.matplotlib简介2.基本绘图功能2.1给图形添加辅助功能2.2在一个坐标系中绘制多个图像2.3多个坐标系显示图像 3.常见图像绘制 1.matplotlib简介 matplotlib 是一个用于创建二维图表和数据可视化的 Python 库&#xff0c;它提供了一种类似于 MATLAB 的绘图接口。matplo…

React基础使用教程

初识JSX React主要使用的就是jsx语法来编写dom&#xff0c;所以我们要先认识jsx&#xff0c;然后再开始学习两者相结合jsx其实就是在JS中编写HTML的一种写法编写jsx要注意以下几个规则&#xff1a; 定义虚拟DOM时&#xff0c;不要写引号标签中混入JS表达式时要用{}样式的类名指…