【算法速刷(4/100)】LeetCode —— 155.最小栈

news2024/11/27 11:10:42

每天写几题,健康每一天

最小栈问题,有许多种办法进行解答,首先需要锁定的条件是要求在实现栈功能之外,要在常数时间内检索最小元素。

一般这种O(1)查找最值都可以用一下方法

  • 哈希表:使用哈希表存储对应栈大小时的栈最小值,在插入删除时都对哈希表进行一个同步操作
  • 小根堆:使用小根堆维护所有数据,每次插入删除时都对堆内对应元素进行一个同步操作
  • 最小栈:使用栈维护对应栈层的最小元素值,插入删除时对栈进行同步操作

以上操作都要求有O(n)的额外空间来记录栈对应层的最小值状态

在这里说一下最小栈的方式

class MinStack {
public:
    MinStack() {
    }
    
    void push(int val) {
        if(_minStk.empty() || val <= _minStk.top())
            _minStk.push(val);
        _stk.push(val);
    }
    
    void pop() {
        if(!_minStk.empty() && _stk.top() == _minStk.top())
            _minStk.pop();
        _stk.pop();
    }
    
    int top() {
        return _stk.top();
    }
    
    int getMin() {
        return _minStk.top();
    }
private:
    stack<int> _stk, _minStk;
};

维护一个最小栈,该栈仅在栈为空,或者新入栈元素不大于最小栈的栈顶元素时才会入栈

同理,该栈仅在栈不为空,且出栈元素等于最小栈的栈顶元素时才会出栈

这样可以避免最小栈始终记录每一层的最小元素,即使新增元素后最小值还是不变,可以节省一定的存储空间

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

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

相关文章

PXE自动批量装机应用

目录 一 生成kickstart自动安装脚本 1.1 工具介绍 1.2 实验过程 1.2.1 环境要求 1.2.2 实验步骤 二 配置dhcp服务 2.1 安装dhcp 2.2 配置dhcp 三 配置syslinux&#xff0c;tftp 3.1 安装suslinux和tftp 3.2 配置软件 3.3 实验效果实现 一 生成kickstart自动安装脚…

光伏逆变器、MPPT、PCS储能变流器、BMU、BCU、BDU和液冷机组

一、光伏逆变器 光伏逆变器&#xff08;PV inverter或solar inverter&#xff09;可以将光伏&#xff08;PV&#xff09;太阳能板产生的可变直流电压转换为市电频率交流电&#xff08;AC&#xff09;的逆变器&#xff0c;可以反馈回商用输电系统&#xff0c;或是供离网的电网使…

基于风险的完整性和检查建模(RBIIM)MATLAB仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 Prior Density (先验密度) 4.2 Posterior Perfect Inspection (后验完美检验) 4.3 Posterior Imperfect Inspection (后验不完美检验) 4.4Cumulative Posterior Imperfect Inspection…

PyTorch深度学习实战(3)——小试牛刀:CIFAR-10分类

下面尝试从零搭建一个PyTorch模型来完成CIFAR-10数据集上的图像分类任务&#xff0c;步骤如下。 &#xff08;1&#xff09;使用torchvision加载并预处理CIFAR-10数据集。 &#xff08;2&#xff09;定义网络。 &#xff08;3&#xff09;定义损失函数和优化器。 &#xff08;4…

P32调试技巧1、2

实用调试技巧 什么是bug?调试是什么&#xff1f;有多么重要&#xff1f;debug和release的介绍windows环境调试介绍一些调试的实例如何写出好的&#xff08;易于调试&#xff09;代码编程常见的错误 什么是bug&#xff1f; 第一次被发现的导致计算机错误的飞蛾&#xff0c;也是…

Modbus -- TCP协议

MODBUS TCP协议是一种基于TCP/IP协议的Modbus变种&#xff0c;它允许Modbus协议在以太网网络上运行&#xff0c;使得设备之间可以通过IP网络交换数据。 一:协议概述 modbus_TCP协议:走的是网口&#xff0c;所以需要创建TCPclient对象进行通信,和modubus-RTU协议最大的区别是&a…

proxfier的使用和设置

1,安装proxifier工具 2&#xff0c;安装之后配置代理设置 3&#xff0c;首先点击彩色卷部分 4&#xff0c;修改配置文件&#xff0c;并且配置代理协议为https ip为127.0.0.1 端口为8888 &#xff08;注意下面图片 default一定为直连) 5&#xff0c;设置代理服务器&#xff…

怎样配置虚拟机IP

目录(三步走) 配置本机IP 配置虚拟机外部IP 配置虚拟机内部IP 参考链接: 配置本机IP 打开“网络和共享中心”——>更改“适配器设置” 找到“VMnet8”,然后右键“属性”,弹出下列窗口 输入本机IP(你目前电脑的IP) win系统可以用的命令:IPconfig 一共有AB两位,…

为什么我3d模型选择面选不到?---模大狮模型网

在展览3D模型设计行业中&#xff0c;设计师常常面临诸多技术挑战&#xff0c;其中之一是在模型编辑过程中遇到选择面的困难。这不仅影响了设计工作效率&#xff0c;还可能影响最终作品的质量和展示效果。本文将探讨在3D模型设计中为何会遇到“为什么我3D模型选择面选不到?”这…

【51单片机仿真】基于51单片机设计的钟表定时闹钟系统仿真源码设计文档演示视频——完整资料下载

演示视频 设计内容 &#xff08;1&#xff09;使用 DS1302 结合字符型 LCD12864 显示器设计一个简易的定时闹钟 LCD 时钟。程序执行后 LCD 显示“00&#xff1a;00&#xff1a;00” &#xff08;2&#xff09;K1—设置现在的时间&#xff0c;年闪烁&#xff0c;再按 K1 键月闪…

淘宝小程序踩坑记录

最近搞了一套淘宝小程序配合淘宝店铺直接跳转&#xff0c;类似于扭蛋机那种机制&#xff0c;真是一路坎坷&#xff0c;一步一个坑&#xff0c;这里记录一下&#xff08;前端&#xff09;&#xff1b;淘宝小程序文当中心 编译相关 用uni-app没有淘宝小程序独有的编译环境&…

EdgeWorkers 最佳实践丨助力流媒体创新

近日亚太区 Akamai EdgeWorkers 首届编程挑战赛圆满落幕。参赛团队充分利用 Akamai 的智能边缘平台&#xff0c;探索无服务器计算的应用潜力。爱奇艺等获胜团队凭借 Akamai EdgeWorkers 和 EdgeKV 产品开发功能&#xff0c;将 DNS 解析时间降低 40% 。 一、云上竞逐&#xff0…

21LTR-Scene打靶渗透【附POC】(权限提升)

靶机下载地址&#xff1a;21LTR: Scene 1 ~ VulnHub21LTR: Scene 1, made by JayMaster2000. Download & walkthrough links are available.https://www.vulnhub.com/entry/21ltr-scene-1,3/ 1. 主机发现端口扫描目录扫描【192.168.2.120】 1.1. 主机发现 nmap -sn 192.…

牛客周赛 Round 54 (A~E)

#牛客周赛 Round 54 &#xff08;A~E&#xff09; 前言&#xff1a; 以后会定时更新很多比赛的题解 希望借此让自己坚持赛后补题 要不然写完就结束 自己水平没有一点提高 本人很菜所以不会更新 太难的题 加油&#xff01;&#xff01;&#xff01;1. ​清楚姐姐的糖葫芦…

落笔成画!Krita+ComfyUI解锁AI实时绘图

原文链接&#xff1a;落笔成画&#xff01;KritaComfyUI解锁AI实时绘图 (chinaz.com) 安装前提&#xff1a;电脑本地已经安装过ComfyUI且能正常运行 首先我们到Krita的官网下载Krita&#xff0c;我们直接下载最新的安装就可以了&#xff0c;安装过程非常简单&#xff0c;选择…

SQL注入之sqli-labs靶场第一关

手工注入less-1 1.找注入点 通过 ?id1 and 12--没有发现变化&#xff0c;尝试闭合发现注入点 字符型注入&#xff0c;单引号闭合 2.猜解字段数量 发现字段数量为3 3.通过union联合查询判断回显点 发现回显点2&#xff0c;3&#xff0c; 4&#xff0c;进行信息收集 数据库…

在PyCharm社区版中切换中文界面的操作方法

在PyCharm社区版中切换中文界面&#xff0c;可以按照以下步骤操作&#xff1a; 打开PyCharm社区版&#xff0c;点击顶部菜单栏的 "File"&#xff08;文件&#xff09;。在下拉菜单中选择 "Settings"&#xff08;设置&#xff09;&#xff0c;或者使用快捷…

SSM整合快速学习

目录 步骤&#xff1a; 一、环境搭建 1.创建JdbcConfig配置类 2.创建JdbcConfig配置类 3.创建MybatisConfig配置类 4.创建jdbc.properties 5.创建SpringMVC配置类 6.创建Web项目入口配置类 二、功能模块开发 步骤1:创建数据库及表 步骤2:编写模型类 步骤3:编写Dao接…

Unlikely argument type for equals(): int seems to be unrelated to Long

代码审查不规范&#xff1a; Unlikely argument type for equals(): int seems to be unrelated to Long check package code_check;public class Obj {public Obj(){}private Long mail;public Long getMail(){return mail;}public void setMail(Long mail){this.mail mail;…

【OpenCV C++20 学习笔记】提取图片中的水平和垂直对象

提取图片中的水平和垂直对象 原理实操——去除五线谱的五线二进制化提取垂直对象完善边缘和最终输出图片黑白反转平滑 完整代码 其他图片元素提取实践提取水平线条提取音符轮廓 原理 在腐蚀和膨胀操作中&#xff0c;通过卷积核(kernel)&#xff0c;或者结构元素(structuring e…