LeetCode--代码详解 155.最小栈

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.

提示:

  • -231 <= val <= 231 - 1
  • poptop 和 getMin 操作总是在 非空栈 上调用
  • pushpoptop, and getMin最多被调用 3 * 104 次

思路

用栈存储正常的值,再用一个栈从大到小存储最小值

代码

class MinStack {private Stack<Integer> stack;private Stack<Integer> minStack;public MinStack() {this.stack = new Stack<>();this.minStack = new Stack<>();}public void push(int val) {stack.push(val);if (!minStack.isEmpty()) {int top = minStack.peek();if (top >= val) minStack.push(val);} else minStack.push(val);}public void pop() {int pop = stack.pop();int top = minStack.peek();if (pop == top) minStack.pop();}public int top() {return stack.peek();}public int getMin() {return minStack.peek();}    
}

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

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

相关文章

代码随想录算法训练营Day25|回溯算法·组合总和III,电话号码的字母组合

组合总和III 题目&#xff1a;找出所有相加之和为n的k个数的组合。组合中只允许含有1-9的正整数&#xff0c;并且每种组合中不存在重复的数字。 组合变量个数为k个&#xff0c;和为n。简单思路是使用k重循环&#xff0c;一层层找出来&#xff0c;然后把每一层的数相加&#x…

操作系统——1.1 操作系统的基本概念1.2 操作系统发展历程

参考课程是王道上传到b站的操作系统&#xff0c;主讲老师是咸鱼&#xff0c;相关的截图都是课程内的&#xff0c;阅读前建议大家支持王道的正版课程。 第一章 计算机系统概述 1.1 操作系统的基本概念&1.2 操作系统发展历程 一、概念 操作系统的概念 操作系统的功能和目…

学习总结11

KMP算法 全称Knuth-Morris-Pratt算法&#xff0c;是一种字符串匹配算法。该算法的目的是在一个文本串S内查找一个模式串P的出现位置。 KMP算法的核心思想是利用模式串自身的特性来避免不必要的字符比较。算法通过构建一个部分匹配表&#xff08;也称为next数组&#xff09;&a…

概率在AI中的应用

更多AI技术入门知识与工具使用请看下面链接&#xff1a; https://student-api.iyincaishijiao.com/t/iNSVmUE8/

【PTA|编程题|期末复习】字符串(一)

【C语言/期末复习】字符和字符串函数&#xff08;附思维导图/例题) 目录 7-1 组织星期信息 输入样例 (repeat3) : 输出样例: 代码 7-2 查找指定字符 输入格式&#xff1a; 输出格式&#xff1a; 输入样例1&#xff1a; 输出样例1&#xff1a; 输入样例2&#xff1a; …

VUE学习——表单的输入绑定

使用【v-model】。 输入框 <template><h1>表单输入绑定</h1><input type"text" v-model"message"><p>输入的值&#xff1a;{{ message }}</p> </template> <script>export default{data(){return{messa…

快速的搭建一个临时的 Linux 系统instantbox

centos 安装 docker-CSDN博客 首先要有docker && docker-compose mkdir instantbox && cd $_ bash <(curl -sSL https://raw.githubusercontent.com/instantbox/instantbox/master/init.sh) docker-compose up -d instantbox: instantbox 可以让你快速的搭…

Redisson是什么,怎么用

Redisson是什么 怎么用 算是面试题会问到的 redisson 是一个用于java简单易用的redis客户端&#xff0c;它封装了常见的分步式操作和并发控制功能&#xff0c;提供了丰富的apl和功能&#xff0c;使得开发人员能够轻松与redis进行交互 在spring Boot中使用redisson 需要进行以下…

Java并发面试算法题目

实现一个生产者&#xff0c;消费者 思路&#xff1a;用lock锁。定义一个类成员变量 max_value&#xff0c;min_value代表资源的最大&#xff0c;最小数量。 package org.app.common;import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; imp…

黑马程序员——移动Web——day01

目录&#xff1a; 平面转换 简介平移定位居中案例-双开门旋转转换原点案例-时钟多重转换缩放案例-播放特效倾斜渐变 线性渐变案例-产品展示径向渐变综合案例 导航-频道渐变按钮轮播图猜你喜欢 1.平面转换 简介 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配…

GEE重投影——NICFI数据集重投影到WGS84坐标

简介 重投影 遥感影像的重投影是将一幅影像从一个地理坐标系统转换到另一个地理坐标系统的过程。在遥感应用中,重投影非常重要,因为不同的遥感影像可能来自于不同的遥感传感器或不同的地理坐标系统,而在进行数据分析和集成时,需要保证所有影像在同一地理坐标系统下。 重…

(二)【Jmeter】专栏实战项目靶场drupal部署

该专栏后续实战示例&#xff0c;都以该篇部署的项目展开操作。 前置条件 参考“&#xff08;一&#xff09;【Jmeter】JDK及Jmeter的安装部署及简单配置” 安装部署Jmeter&#xff0c;从文章最后下载“Postman、Rancher.ova、VirtualBox-7.0.12-159484-Win.exe、Xshell-7.0.01…

如何在 Python 中处理 Unicode

介绍 Unicode 是世界上大多数计算机的标准字符编码。它确保文本&#xff08;包括字母、符号、表情符号&#xff0c;甚至控制字符&#xff09;在不同设备、平台和数字文档中显示一致&#xff0c;无论使用的操作系统或软件是什么。它是互联网和计算机行业的重要组成部分&#xf…

小白学习Halcon100例:如何利用动态阈值分割图像进行PCB印刷缺陷检测?

文章目录 *读入图片*关闭所有窗口*获取图片尺寸*根据图片尺寸打开一个窗口*在窗口中显示图片* 缺陷检测开始 ...*1.开运算 使用选定的遮罩执行灰度值开运算。*2.闭运算 使用选定的遮罩执行灰度值关闭运算*3.动态阈值分割 使用局部阈值分割图像显示结果*显示原图*设置颜色为红色…

ARMv8-AArch64 的异常处理模型详解之异常处理概述Handling exceptions

异常处理模型详解之异常处理概述 一&#xff0c;异常处理相关概念二&#xff0c;异常处理概述 一&#xff0c;异常处理相关概念 在介绍异常处理之前&#xff0c;有必要了解一些关于异常处理状态的术语&#xff1a; 当处理器响应一个异常时&#xff0c;我们称该异常被获取了&a…

PIL Image 使用详解

文章目录 1. 各种图像处理库介绍1.1 读取数据的通道顺序1.2 Python图像处理库&#xff08;PIL、Pillow、Scikit-image、Opencv&#xff09; 2、PIL库与Pillow库的区别3 Pillow库3.1 Pillow库特点3.2 Pillow库安装 4、Pillow的Image对象&#xff08;PIL.Image&#xff09;4.1 Im…

Peter算法小课堂—区间模型(2)

上次咋们讲了前两个区间模型&#xff1a;1.最大不重叠区间数 2.不重叠区间最少分组数。今天我们就学习&#xff1a;最小区间覆盖问题、区间重叠最厚层数&#xff01; 最小区间覆盖 先看三道题 那么&#xff0c;第1题&#xff0c;它是浮点数的题&#xff0c;也就要求首尾相同。…

知识图谱 多模态学习 2024 最新综述

知识图谱遇见多模态学习&#xff1a;综述 论文题目&#xff1a;Knowledge Graphs Meet Multi-Modal Learning: A Comprehensive Survey 论文链接&#xff1a;http://arxiv.org/abs/2402.05391 项目地址&#xff1a;https://github.com/zjukg/KG-MM-Survey 备注&#xff1a;55…

Unresolved reference: kotlinx 和 Unresolved reference:xxx

Unresolved reference: kotlinx 这个报错是因为build.gradle中忘记apply plugin了 apply plugin: kotlin-android-extensions如下 同步以后再次编译发现报错 Unresolved reference:xxx 是因为用于使用 Gradle 构建的 Kotlin 版本与 IDE 插件中的版本不一样的原因 解决方法 …

剪辑视频衔接怎么操作 剪辑视频衔接过渡自然方法 剪辑视频教程新手入门 抖音剪辑短视频 会声会影视频制作教程

视频剪辑在现代社交媒体和数字媒体时代中变得越来越重要。它广泛应用于各种领域&#xff0c;包括电影制作、广告宣传、教育培训、社交媒体内容创作等。 一、剪辑视频衔接怎么操作 会声会影是一款功能强大、易于使用的视频编辑软件。接下来我们拿会声会影为例讲解剪辑视频如何…