【LeetCode】---15.最小栈

news/2024/9/22 15:33:08/

【LeetCode】---15.最小栈

  • 一、题目解析:
  • 二、算法原理:
  • 三、代码实现:

一、题目解析:

在这里插入图片描述

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。

二、算法原理:

我们会单独开一个最小栈,来获得入栈里面中最小的元素:

但是有两个细节必须需要注意:

(1)当两个栈都为空的时候先入元素,然后将最小栈的栈顶元素和要入栈的元素进行对比,将最小值加入最小栈。
(2)如果要压入的元素都是最小值,最小值出现哪怕是多次,原来的栈要压入,最小栈也要压入,因为我们删除的时候不仅要删除原来的栈,还要删除最小栈的栈顶元素。

在这里插入图片描述
在这里插入图片描述

三、代码实现:

class MinStack 
{
public:MinStack() {}void push(int val) {//当两个栈:st minst都是刚开始的时候为空的话,都先入一个元素st.push(val);if(minst.empty()||val<=minst.top())// 入val:(1)如果最小栈为空:入val(2)当入栈的val <= minst栈顶的最小值(注意val==minst.top()也要入栈!!!){minst.push(val);}}void pop() {//st.pop();// 这个表达式一定要在判断的后面!!!如果你都删完了,我还怎么判断?if(minst.top()==st.top()){minst.pop();}st.pop();}int top() {return st.top();}int getMin() {return minst.top();}stack<int> st;stack<int> minst;
};/*** 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();*/

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

相关文章

【MySQL】MySQL中的原子更新操作:如何模拟MongoDB的`find_one_and_update`

远方有琴 愀然空灵 声声催天雨 涓涓心事说给自己听 月影憧憧 烟火几重 烛花红 红尘旧梦 梦断都成空 雨打湿了眼眶 年年倚井盼归堂 最怕不觉泪已拆两行 我在人间彷徨 寻不到你的天堂 东瓶西镜放 恨不能遗忘 又是清明雨上 折菊寄到你身旁 把你最爱的歌来轻轻唱 …

Python来计算 1,2,3,4 能组成多少个不相同且不重复的三位数?

我们今天的例子是 有 1&#xff0c;2&#xff0c;3&#xff0c;4 四个数字&#xff0c;它们能组成多省个互不相同且无重复的三位数&#xff1f;都分别是多少&#xff1f; 话不多说&#xff0c;我们先上代码 num 0 # 我们写了三个for循环&#xff0c;表示生成的三位数 for i…

FlaUI

FlaUI是一个基于微软UIAutomation技术&#xff08;简称UIA&#xff09;的.NET库&#xff0c;它主要用于对Windows应用程序&#xff08;如Win32、WinForms、WPF、Store Apps等&#xff09;进行自动化UI测试。FlaUI的前身是TestStack.White&#xff0c;由Roemer开发&#xff0c;旨…

Now in Android 4月份更新速览

Now in Android 4月份更新速览 1. 引言 Android 15 Beta的发布标志着Android生态系统的新一轮更新。这次更新旨在提升用户体验和开发效率&#xff0c;让我们一起来了解其中的重要内容。 2. Android 15 Beta介绍 Android 15 Beta带来了一系列新功能&#xff0c;其中包括默认边…

【表格版】英语学习笔记--发音-元音和辅音

以下所有内容来自“AI豆包”。 元音&#xff08;20个&#xff09; 元音单元音&#xff08;12个&#xff09;双元音&#xff08;8个&#xff09;短长(ʊə)发音类似“乌尔”(ɪ)发音类似“一”但短促(iː)发音类似“一”(eɪ)发音类似“诶”(ə)发音类似“额”但短促(əː)发…

【快速入门 LVGL】-- 5、Gui Guider界面移植到STM32工程

上篇&#xff0c;我们已学习&#xff1a;【快速入门 LVGL】-- 4、显示中文 工程中添加了两个按钮作示范。运行效果如图&#xff1a; 本篇&#xff1a;把Gui Guider设计好的界面&#xff0c;移植到STM32工程。 特别地&#xff1a; 在使用Gui Guider进行界面设计时&#xff0c;应…

USB HID报告描述符学习

参考资料 HID 报告描述符 (qq.com)https://mp.weixin.qq.com/s?__bizMzU1ODI3MzQ1MA&mid2247485748&idx1&sn112bd8014eb96b03308b3b808549e8d4&chksmfc284ff1cb5fc6e770c2d2ece46c17bf2529901b45a357938978fa62163723556ad497b05c47&cur_album_id3340417…

15.Blender Eevee和Cycles渲染引擎对比

初步介绍 Eevee是实时渲染的引擎&#xff0c;会省略一些解算方式&#xff0c;尤其对光线和阴影 Cycles会考虑这些因素&#xff0c;所以会对光线和阴影的表达更加真实&#xff0c;有一个实时光线追踪的功能 Cycles渲染完之后&#xff0c;每移动一次画面&#xff0c;都会重新渲染…