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

【LeetCode刷题笔记】155.最小栈

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
更多算法知识专栏:算法分析🔥
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述
LeetCode题解专栏:【LeetCode刷题笔记】


目录

  • 题目链接
  • 一、题目描述
  • 二、示例
  • 三、题目分析
  • 四、代码实现(C++)

题目链接

LeetCode 155.最小栈

一、题目描述

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

二、示例

示例 1:

输入:
[ “MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin” ]
[ [],[-2],[0],[-3],[],[],[],[] ]

输出:
[ null,null,null,null,-3,null,0,-2 ]

解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.

三、题目分析

每个元素⼊栈时,需要当前栈中的最⼩值

每次将数据压入和弹出栈时最小值都有可能发生改变,这种改变会导致无法随时取得栈内的最小值

例如下图:当1弹出栈后,栈内最小值3无法取得,此时需要额外一个数据结构用来存储每个时刻的最小值
image.png
可以使⽤⼀个额外的栈minStk来记录栈中*每个元素⼊栈时的栈中的最⼩元素是多少,这样每次删除元素时就能快速得到剩余栈中的最⼩元素了

四、代码实现(C++)

class MinStack {
public:stack<int>st;stack<int>minstk;MinStack() {minstk.push(INT_MAX);}void push(int val) {st.push(val);if(val <= minstk.top() || minstk.empty()){minstk.push(val);}else{minstk.push(minstk.top());}}void pop() {      st.pop();minstk.pop();}int top() {return st.top();}int getMin() {return minstk.top();}
};/*** Your MinStack object will be instantiated and called as such:* MinStack* obj = new MinStack();* obj->push(val);* obj->pop();* int param_3 = obj->top();* int param_4 = obj->getMin();*/

image.png


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!
如果本文哪里有错误的地方还请大家多多指出(●'◡'●)
http://www.lryc.cn/news/263229.html

相关文章:

  • 我的4096创作纪念日
  • Java Web 01_HTML4HTML5基础标签语法
  • Androidstudio加载编译时kotlin-compiler-embeddable一直下载中
  • 案例073:基于微信小程序的智慧旅游平台开发
  • Flink系列之:Flink 1.8.0 中的状态 TTL:如何在 Apache Flink 中自动清理应用程序状态
  • 2023 亚马逊云科技 re:Invent 大会探秘:Aurora 无限数据库的突破性应用
  • IDEA添加Apifox插件后,返回参数不详细解决办法
  • js多图合成一张图
  • 利用原始套接字解决mac地址错误问题【南瑞SysKeeper-2000】
  • JVM- 为什么G1垃圾回收器需要有大对象区
  • 操作系统的界面
  • User 怎么在anaconda的虚拟环境中安装下载好的jieba.tar.gz包呢
  • 1.【分布式】分布式事务详解
  • selenium-wire简介
  • 华为组播配置案例
  • lua语法
  • 5A-Downloader,m3u8文件转mp4文件,音视频分离ts合并、转mp4
  • 标准IO与文件IO
  • 流行的 React 相关库和框架
  • 游戏引擎?
  • C语言--字符函数与字符串函数
  • 整理了一些热门、含免费次数的api,分享给大家
  • Wireshark在网络性能调优中的应用
  • 关于设计师的自我评价(合集)
  • Hudi Clustering
  • 通过与 Team Finance 整合,Casper Network 让 Token 的创建、部署更加高效
  • Linux软件管理rpm和yum
  • uart和usart的区别
  • 原生微信小程序-使用 阿里字体图标 详解
  • 机器学习 | 机器学习基础知识