最小栈00

news2025/1/13 13:43:52

题目链接

最小栈

题目描述


注意点

  • pop、top 和 getMin 操作总是在 非空栈 上调用

解答思路

  • 由于栈先进后出的特点,对于任意一次入栈操作,只要该元素未被弹出,则其前面插入的元素一定都还在栈中,所以每次入栈时只需要根据其前一次入栈的元素进行比较就可以推出当前栈中最小元素,而不需要多次判断大小
  • 使用辅助栈存储栈中此时最小元素,如果当前元素大于辅助栈栈顶元素,则不对辅助栈做操作,否则辅助栈也同样入栈;在主栈元素弹出的同时与辅助栈栈顶元素进行判断,如果是栈顶元素则辅助栈也同样出栈,保证辅助栈栈顶元素始终为栈中最小元素

代码

class MinStack {
    // 主栈存元素
    Deque<Integer> mainDeque;
    // 辅助栈存最小值
    Deque<Integer> helperDeque;

    public MinStack() {
        mainDeque = new LinkedList<>();
        helperDeque = new LinkedList<>();
    }
    
    public void push(int val) {
        mainDeque.push(val);
        if (helperDeque.isEmpty() || val <= helperDeque.peek()) {
            helperDeque.push(val);
        }
    }
    
    public void pop() {
        int res = mainDeque.pop();
        if (res == helperDeque.peek()) {
            helperDeque.pop();
        }
    }
    
    public int top() {
        return mainDeque.peek();
    }
    
    public int getMin() {
        return helperDeque.peek();
    }
}

关键点

  • 栈先进后出的特点

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

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

相关文章

Lnton羚通视频算法算力云平台【PyTorch】教程:学习Datasets-DataLoader基础知识

Dataset & DataLoader PyTorch 提供了两个数据处理的基本方法&#xff1a;torch.utils.data.DataLoader torch.utils.data.Dataset 允许使用预加载的数据集以及自己的数据。 Dataset 存储样本及其对应的标签&#xff0c; DataLoader 在 Dataset 基础上封装了一个可迭代的对…

苍穹外卖 day3 实现登录过程中MD5加密

一 原来是明文存的 密码可见度太高&#xff0c;MD5加密为密文图像 效果 二 密文实现步骤 修改明文密码&#xff0c;改成密文 123456 密文值&#xff1a;e10adc3949ba59abbe56e057f20f883e代码如下所示 在这里插入代码片 package com.sky.service.impl;import com.sky.con…

[bug日志]springboot多模块启动,在yml配置启动端口8081,但还是启动了8080

【问题描述】 配置的启动端口是8081&#xff0c;实际启动端口是8080 【解决方法】 1.检查application.yml的配置是否有错误(配置项中&#xff0c;显示白色就错&#xff0c;橙色无措) 2.检查pom.xml的打包方式配置项配置&#xff0c;主pom.xml中的配置项一般为&#xff1a;&l…

司徒理财:8.23黄金最新行情走势分析及操作策略

黄金走势分析&#xff1a;      黄金下跌遇阻&#xff0c;短线开启震荡调整走势&#xff0c;但跌势依旧没有改变&#xff0c;没有突破1906压力前&#xff0c;还是偏空走势&#xff0c;反弹继续干空。趋势行情&#xff0c;不要轻言翻转&#xff01;即便下跌结束&#xff0c;…

DB2的日志

在DB2中&#xff0c;该机制使用日志功能实现。所谓日志&#xff0c;可以被认为在一条事务被落实之前&#xff0c;能够保证其记录被写入永久存储系统的一种方法。 那么为什么需要日志呢&#xff1f;直接把变化的数据写入磁盘不是更好&#xff1f;之所以需要日志&#xff0c;主要…

芯科科技宣布推出下一代暨第三代无线开发平台,打造更智能、更高效的物联网

第三代平台中的人工智能/机器学习引擎可将性能提升100倍以上 Simplicity Studio 6软件开发工具包通过新的开发环境将开发人员带向第三代平台 中国&#xff0c;北京 - 2023年8月22日 – 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&…

基于IDEA使用maven创建hibernate项目

1、创建maven项目 2、导入hibernate需要的jar包 <!--hibernate核心依赖--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.4.1.Final</version></dependency><!--…

微信小程序:页面有内容却不显示原因

先检查&#xff0c;app.json中这两项路径是否正确 如果正确的话&#xff0c;不显示的那个页面的。js文件中需要Page({})&#xff0c;初始化&#xff0c;这个必须有&#xff1b; 如果还是不出现&#xff0c;可以先把路径删掉&#xff0c;然后刷新一下&#xff0c;这个时候会提示…

ctfshow web入门 web103-web107

1.web103 和102一样 payload: v2115044383959474e6864434171594473&v3php://filter/writeconvert.base64-decode/resource1.php post v1hex2bin2.web104 值只要一样就可以了 payload: v21 post v113.web105 考查的是$$变量覆盖,die可以带出数据,输出一条消息&#xf…

C++信息学奥赛1133:输出亲朋字符串

#include <iostream> #include <string> using namespace std;int main() {string n;cin >> n; // 输入字符串for (int i 0; i < n.length(); i){char Front n[i]; // 当前字符char rear n[i 1]; // 下一个字符if (i n.length() - 1){rear n[0];…

激进的现货白银技巧

在现货白银投资中&#xff0c;我们有保守的交易技巧&#xff0c;也有激进的交易技巧&#xff0c;这给了投资者有进退的选择。其实很多投资者认为贵金属的投资只能长期持有&#xff0c;等待升值&#xff0c;确实有部分投资者是这么做的。但是其实现货白银投资还是有非常激进的一…

这样处理 Python 日志,优雅

迷途小书童的Note 读完需要 4分钟 速读仅需 2 分钟 1 loguru 简介 loguru 是 Python 的一个第三方日志模块&#xff0c;相较于标准库 logging 模块&#xff0c;它提供了更简洁易用的 API&#xff0c;内置丰富的格式化、过滤、文件输出等高级功能。loguru 让 Python 日志记录变得…

HTML5岗位技能实训室建设方案

一 、系统概述 HTML5岗位技能技术是计算机类专业重要的核心课程&#xff0c;课程所包含的教学内容多&#xff0c;实践性强&#xff0c;并且相关技术更新快。传统的课堂讲授模式以教师为中心&#xff0c;学生被动式接收&#xff0c;难以调动学生学习的积极性和主动性。混合式教学…

Maven生命周期、阶段与目标

生命周期 对于Java项目来说&#xff0c;一个项目的生命周期可能会有创建项目、编译、打包、运行、部署等&#xff0c;而maven将项目的生命周期进行了标准化。 Maven默认支持的生命周期有clean、site、default&#xff0c;其中 site这个生命周期几乎用不到&#xff0c;最常用的…

Unity 图片资源的适配

前言 最近小编做Unity项目时&#xff0c;发现在资源处理这方面和Android有所不同&#xff1b;例如&#xff1a;Android的资源文件夹res下会有着mipmap-mdpi&#xff0c;mipmap-hdpi&#xff0c;mipmap-xhdpi&#xff0c;mipmap-xxhdpi&#xff0c;mipmap-xxxhdpi这五个文件夹&a…

java八股文面试[java基础]——Object类有哪些方法

通过IDEA打开Object类就可以看到 &#xff08;1&#xff09;clone方法 保护方法&#xff0c;实现对象的浅复制&#xff0c;只有实现了Cloneable接口才可以调用该方法&#xff0c;否则抛出CloneNotSupportedException异常。 主要是JAVA里除了8种基本类型传参数是值传递&#xf…

什么是缓存雪崩,什么是缓存穿透,什么是缓存击穿,如何解决 ?

目录 1. 什么是缓存雪崩&#xff1f;如何解决 &#xff1f; 2. 什么是缓存穿透&#xff1f;如何解决 &#xff1f; 3. 什么是缓存击穿&#xff1f;如何解决 &#xff1f; 1. 什么是缓存雪崩&#xff1f;如何解决 &#xff1f; 缓存雪崩是指在短时间内&#xff0c;有大量的缓存…

3D姿态相关的损失函数

loss_mpjpe: 计算预测3D关键点与真值之间的平均距离误差(MPJPE)。 loss_n_mpjpe: 计算去除尺度后预测3D关键点误差(N-MPJPE),评估结构误差。 loss_velocity: 计算3D关键点的速度/移动的误差,评估运动的平滑程度。 loss_limb_var: 计算肢体长度的方差,引导生成合理的肢体长度…

SpeedBI数据可视化工具:丰富图表,提高报表易读性

数据可视化工具一大作用就是能把复杂数据可视化、直观化&#xff0c;更容易看懂&#xff0c;也就更容易实现以数据驱动业务管理升级&#xff0c;因此一般的数据可视化工具都会提供大量图形化的数据可视化图表&#xff0c;以提高报表的易懂性&#xff0c;更好地服务企业运营决策…

AUTBUS全球首发,东土与您相约工博会

2023年中国国际工业博览会将于9月19日至9月23日在上海盛大举办。作为工博会重点参展企业之一&#xff0c;东土科技将重磅亮相6.1号馆工业自动化展&#xff08;展位号&#xff1a;6.1H-D137&#xff09;。 值得一提的是&#xff0c;AUTBUS 国际标准作为全球第一个基于时间敏感网…