【数据结构-栈】力扣155. 最小栈

news2024/10/23 1:47:02

设计一个支持 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.
在这里插入图片描述

class MinStack {
    stack<int> x_stack;
    stack<int> min_stack;
public:
    MinStack() {
        min_stack.push(INT_MAX);
    }
    
    void push(int val) {
        x_stack.push(val);
        min_stack.push(min(min_stack.top(),val));
    }
    
    void pop() {
        if(!x_stack.empty()) x_stack.pop();
        min_stack.pop();
    }
    
    int top() {
        return x_stack.top();
    }
    
    int getMin() {
        return min_stack.top();
    }
};

时间复杂度:对于题目中的所有操作,时间复杂度均为 O(1)。因为栈的插入、删除与读取操作都是 O(1),我们定义的每个操作最多调用栈操作两次。

空间复杂度:O(n),其中 n 为总操作数。最坏情况下,我们会连续插入 n 个元素,此时两个栈占用的空间为 O(n)。

这道题的目的就是建立一个最小栈来辅助推出栈中的最小值。由于是栈是先进后出的原则,每次push的时候,我们要把元素push到x_stack中,然后将最小栈的栈顶元素和当前元素比较,push最小的元素,所以最小栈的栈顶始终是x_stack中的最小元素。

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

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

相关文章

SD NAND Flash 小容量存储解决方案及其STM32测试例程讲解

文章目录 前言一、Flash闪存是什么&#xff1f;二、SD NAND Flash三、STM32测试例程四、总结 前言 随着移动存储技术的快速发展和便携式数字设备的广泛应用&#xff0c;Flash闪存作为非易失性存储解决方案&#xff0c;在各种电子设备中扮演着越来越重要的角色。本文提供关于Fl…

在调用微信公众号H5页面支付提示签名失败

利用的是APIv2密钥&#xff0c;通过咨询微信支付客服&#xff0c;通过验签工具都验证了&#xff0c;没有问题&#xff0c;但是在发布后&#xff0c;环境中还是提示支付验签失败&#xff0c;不知道是什么原因&#xff0c;不知道有没有人遇到过&#xff0c;求大神指点下&#xff…

Kubernetes--深入理解Service与CoreDNS

文章目录 Service功能Service 的常见使用场景 Service的模式iptablesIPVS Service类型ClusterIPNodePortLoadBalancerExternalName Service的工作机制EndpointEndpoint 与 Service 的关系Endpoint 的工作原理命令操作 CoreDNSCoreDNS 的配置CoreDNS 的典型插件Corefile 示例Cor…

程序员的自我修养(链接、装载与库)--摘录与汇总(二)

程序和进程的区别(P150) 程序是一个静态的概念&#xff0c;是一些预先编译好的指令和数据集合的一个文件进程是一个动态的概念&#xff0c;它是程序运行时的一个过程 程序和进程有什么区别 程序&#xff08;或者狭义上讲可执行文件&#xff09;是一个静态的概念&#xff0c;它…

PHP:下拉列表,颜色展示

PHP展示下拉列表&#xff0c;选项设置为数据库存储颜色进制&#xff0c;colorname是颜色名称&#xff0c;color是颜色进制 一、表结构 produce_info_nav1_colorshow produce_info_nav1 二、核心代码 //查询对应默认颜色 $sql_selcolor "SELECT color FROM produce_i…

机器学习篇-day07-朴素贝叶斯和特征降维

一. 朴素贝叶斯算法 朴素贝叶斯算法介绍 利用概率值进行分类的一种机器学习算法 复习概率 相互独立&#xff1a;如果P(AB) P(A)P(B)&#xff0c;则称事件A与事件B相互独立 比如&#xff1a;女神喜欢程序员的概率&#xff0c;女神喜欢产品经理的概率&#xff0c;两个事件没有…

詹妮弗洛佩兹的比基尼影集显示,与本阿弗莱克离婚期间她正处于最勇敢的时刻

詹妮弗洛佩兹已然正式终结了其饱含浓情蜜意的时代&#xff01;此乃我……当下之时代&#xff0c;且于同本阿弗莱克离异之际&#xff0c;步入了迄今最为英勇无畏的时代&#xff0c;此番全新的摄影集便是有力的明证。 10 月 9 日&#xff0c;《采访》杂志展示了一系列洛佩兹用作…

水文监测系统的多功能性与作用深度剖析

在现代水利管理中&#xff0c;水文监测系统作为重要的技术手段&#xff0c;正发挥着日益关键的作用。这一系统&#xff0c;也被称为水文信息自动化采集系统&#xff0c;通过自动或半自动的方式&#xff0c;实现了对江河、湖泊、水库等水体以及地下水的实时监测&#xff0c;涵盖…

功能强大且简单易用的实时算法视频监控,智慧快消开源了。

智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。 基于多年的深度…

jmeter 对 dubbo 接口测试是怎么实现的?有哪几个步骤

目录 前言 一.先了解下 dubbo 的原理&#xff0c;最好自己搭建一个案例可参考以下方式搭建 http://09792bb8.wiz03.com/share/s/09uiKU3j2kR120MIpT2AdLm70pfBmE1zFApv2jiDZ01GhE8j 二.编写 dubbo 测试脚本 前言 最近使用工作中使用jmeter调用dubbo接口进行接口测试&#xf…

SLAM中的加权最小二乘法

一、数学描述 机器人携带传感器在环境中运动可由 运动方程 和 观测方程 描述。 其中 表示时刻&#xff1b; 表示 时刻的位姿&#xff1b; 是运动传感器的读数或者输入&#xff1b; 为路标点&#xff1b; 表示观测数据。 为运动噪声&#xff0c;例如对机器人下达了前进 1m 的指…

大模型时代,云原生数据底座的创新和实践

本文整理自百度云智峰会 2024 —— 云原生论坛的同名演讲。 大模型毫无疑问是当前技术发展的热点&#xff0c;成为大家默认的提升生产力工具。 但是&#xff0c;大模型训练主要使用互联网上的公开数据为主&#xff0c;没有企业内部的数据&#xff0c;所以大模型本质上自带的都…

并行 parallel broadcast partition pruning 分区裁剪 optimizer_dynamic_sampling=7

insert into abc 没有PDML所以不是全部并行 只有select 的情况 全部并行&#xff0c;没有 px send broadcast &#xff0c;所以rows没从103M变成103*8M select *from A&#xff0c;B where A.Pkey B.Pkey and A.Pkey XX A B表都会进行分区裁剪 ----并行为什么更…

定了!OPPO全旗舰新品10月24日发布

今日&#xff0c;OPPO宣布将于2024年10月24日19&#xff1a;00举办OPPO Find X8系列及旗舰生态新品发布会&#xff0c;以全新一代的年度影像旗舰 OPPO Find X8系列为核心&#xff0c;通过新一代的OPPO Enco X3旗舰耳机、OPPO Pad 3 Pro旗舰平板&#xff0c;以及再度升级的安卓全…

解决低版本pytorch和onnx组合时torch.atan2()不被onnx支持的问题

解决这个问题&#xff0c;最简单的当然是升级pytorch和onnx到比较高的版本&#xff0c;例如有人验证过的组合: pytorch2.1.1cu118, onnxruntime1.16.3 但是因为你的模型或cuda环境等约束&#xff0c;不能安装这么高的版本的pytorch和onnx组合时(例如我的环境是pytorch1.12&…

单细胞转录组亚群分析

1 单细胞转录组亚群常见分析内容 重磅综述&#xff1a;三万字长文读懂单细胞RNA测序分析的最佳实践教程 &#xff08;原理、代码和评述&#xff09; 如何使用Bioconductor进行单细胞分析&#xff1f; 单细胞转录组亚群分析的内容根据样品数目多少&#xff0c;可以分为单个样…

开源项目 - 轻量级人体姿态 人体关键点检测 机器视觉 深度学习

开源项目 - 轻量级人体姿态 人体关键点检测 机器视觉 深度学习 项目地址&#xff1a;https://gitcode.net/EricLee/light_pose 1、数据集来源&#xff1a;coco2017 数据集 * coco 数据集官方网站&#xff1a;https://cocodataset.org/#home * [数据集下载地址(百度网盘 Pa…

CogVideoX:Text-to-Video Diffusion Models with An Expert Transformer

研究背景 背景介绍: 这篇文章的研究背景是文本到视频模型的快速发展&#xff0c;特别是Transformer架构和扩散模型的应用。早期尝试预训练和扩展Transformer生成视频已经显示出巨大潜力&#xff0c;如CogVideo和Phenaki。扩散模型在多模态生成方面也取得了显著进展&#xff0c…

数据结构 -- 排序算法

一 排序 1.1 排序的概念 所谓排序&#xff0c;就是一种使一串数据记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减地组织起来的操作。 从排序方式上&#xff0c;排序算法一般被分为比较排序和非比较排序。从比较排序的内容上&#xff0c;它一般被分为…

Excel:vba实现拆分单元格成一字一单元格

我拿到的表格如下&#xff1a; 我想实现的表格效果如下&#xff1a; 要求就是&#xff1a;将A列的千字文拆分成一个单元格一个字&#xff0c;并整理成4列 我这里是将效果呈现到一个新的表里面&#xff0c;没有在原表里面(在原表里…