Leetcode每日刷题之155.最小栈

news/2024/9/16 0:41:16/ 标签: leetcode, 算法, 数据结构

1.题目解析

本题是实现一个栈并且要实现其中的插入、删除、返回栈顶元素、返回最小元素的函数,这里主要的难点就是返回最小元素的函数,如果我们直接遍历,那么时间复杂度就是O(N),但是题目要求我们需要在常数时间也就是O(1)的时间复杂度内实现,那么接下来我们使用一种巧妙地方法来完成本题

 

2.算法原理

这里的主要难点只有在常数时间内找出栈顶最小元素,我们可以创建一个minst栈来存储数据,具体原理是在向st插入数据时判断此时插入的数据与minst中的栈顶元素哪个更小,如果minst的栈顶元素更小则st继续插入,反之则将该较小值插入minst的栈顶即可,注意重复数字也需要插入,因为st删除数据时如果此时st与minst的栈顶元素相同则需要同时删除,最后minst栈顶的元素就是st栈中的最小值,此时直接返回minst.top()即可

 

3.代码展示

class MinStack {
public://构造函数可以直接使用默认构造//这里可以保留也可以直接删除,因为//最后都会执行默认构造函数,析构也是如此MinStack() {}//插入原栈同时判断是否需要插入最小数据的栈void push(int val) {st.push(val);if(minst.empty() || minst.top() >= val){minst.push(val);}}//删除原栈元素同时删除最小栈中对应元素void pop() {if(minst.top() == st.top()){minst.pop();}st.pop();}int top() {return st.top();}int getMin() {return minst.top();}private: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/1521824.html

相关文章

Docker必备命令集合,让你轻松驾驭容器化

Docker作为现代化应用程序的部署和管理平台&#xff0c;已经成为开发者和运维工程师的得力工具。但对于新手而言&#xff0c;面对众多的命令和参数&#xff0c;有时会感到困惑。本文将为你总结一组常用的Docker命令&#xff0c;助你快速上手并高效使用这一强大工具。 1. 基础命…

Qt数字化信息通讯调制解调

对于数字化信息通讯调制解调&#xff0c;Qt本身并不直接提供调制解调的功能&#xff0c;但是可以通过Qt的网络编程接口&#xff0c;结合相关的算法和硬件设备来实现。例如&#xff0c;可以通过Qt的信号处理库来实现数字信号的调制和解调算法&#xff0c;或者通过串口通信与外部…

word中怎么快速选中光标之前或之后的全部内容?

在Word中&#xff0c;快速选中光标之后的全部内容的快捷键&#xff1a;Ctrl Shift End&#xff1b; 在Word中&#xff0c;快速选中光标之前的全部内容的快捷键&#xff1a;Ctrl Shift Home。 在Word中&#xff0c;选取的快捷键如下。 一、选定整个文本&#xff1a; 1&#…

微信小程序认证和备案

小程序备案的流程一般包括以下步骤‌&#xff1a; 准备备案所需材料‌&#xff1a;通常需要提供‌营业执照、法人的‌身份证、两个‌手机号和一个邮箱等资料。 ‌1 ‌登录‌微信公众平台‌&#xff1a;作为第一次开发微信小程序的服务商&#xff0c;需要通过微信公众平台申请…

掌握Git分支管理策略:让团队协作更高效

在现代软件开发过程中&#xff0c;版本控制系统&#xff08;VCS&#xff09;是不可或缺的一部分。Git作为目前最流行的分布式版本控制系统之一&#xff0c;为开发者提供了强大的工具集来管理代码变更历史。然而&#xff0c;仅仅掌握Git的基本命令并不足以应对大型项目和团队协作…

中间代码例题

答案&#xff1a;D 知识点&#xff1a; 中间代码是一种简单且含义明确的记号系统&#xff0c;可以有若干形式&#xff0c;它们的共同特征是与机器无关。 最常见的中间代码有&#xff1a;后缀式&#xff0c;语法树&#xff0c;三地址码&#xff0c;四元式 这些往往是数据&am…

HarmonyOS开发实战( Beta5版)Stack组件实现滚动吸顶效果实现案例

介绍 本示例介绍运用Stack组件以构建多层次堆叠的视觉效果。通过绑定Scroll组件的onScroll滚动事件回调函数&#xff0c;精准捕获滚动动作的发生。当滚动时&#xff0c;实时地调节组件的透明度、高度等属性&#xff0c;从而成功实现了嵌套滚动效果、透明度动态变化以及平滑的组…

linux中普通用户免密切换root

在 Linux 中如果要实现不输入密码直接切换到 root 权限&#xff0c;可以通过配置 sudoers 文件来实现。但这种方式有一定安全风险&#xff0c;使用时需谨慎。 以下是具体步骤&#xff1a; 1.以当前有 sudo 权限的用户身份打开终端。 2.使用以下命令编辑 /etc/sudoers 文件&…

WordPress安装指南:主题、插件和最佳实践

WordPress是世界上最流行的内容管理系统&#xff08;CMS&#xff09;&#xff0c;因其易用性和灵活性而备受欢迎。本文将指导您完成WordPress的安装过程&#xff0c;介绍一些常用的主题和插件&#xff0c;并分享一些重要的注意事项。 1. WordPress安装 步骤1&#xff1a;准备…

数字时代,寻找新的生意增长点之前要做什么准备?

要做好最基础也最繁复的数据管理。 在竞争日益激烈的快消市场中&#xff0c;企业面临前所未有的挑战与压力。在这种高压环境下&#xff0c;数字化转型不再仅仅是选择&#xff0c;而是企业探索新的业务增长点、保持竞争优势的关键战略。然而&#xff0c;随着企业数字化进程的加…

MATLAB进行天线阵列方向图综合

摘要&#xff1a;本次推文将介绍如何利用MATLAB的Sensor Array Analyzer进行天线阵列的方向图综合。 1. 阵列方向图综合理论 对于均匀平面阵列而言&#xff0c;其阵因子公式可以写成 当阵列是三角网格布置或者圆环阵时&#xff0c;《ANTENNA THEORY ANALYSIS AND DESIGN》等相…

Postgresql表和索引占用空间回收释放(表空间膨胀)

Postgresql表和索引占用空间回收释放&#xff08;表空间膨胀&#xff09; -- 1.创建测试表t_user create table if not exists t_user(id serial primary key,user_name varchar(255),pass_word varchar(255),create_time date,dr char(1) );create index ind_time on t_user(c…

【学习笔记】SSL证书安全机制之证书验证

前言&#xff1a;每当Client从Server收到一张证书&#xff0c;有2件事Client需要去验证&#xff1a; 证书是否有效&#xff1f; 证书只是文件中的文本Client如何知道内容能够信任&#xff1f;Server是否是证书真正的拥有者&#xff1f; 证书可以公开获取Client如何知道Server是…

rsync搭建全网备份

rsync搭建全网备份 1. 总体概述1.1 目标1.2 简易指导图1.3 涉及工具或命令1.4 环境 2. 实施2.1 配置备份服务器2.2 备份文件准备2.3 整合命令2.4 扩展功能 1. 总体概述 1.1 目标 本次搭建目标&#xff1a; 每天定时把服务器数据备份到备份服务器备份完成后进行校验把过期数据…

代码随想录 -- 二叉树 -- 二叉树的最小深度

111. 二叉树的最小深度 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;递归调用 递归返回值&#xff1a;返回以当前节点为根节点的二叉树的最小深度 递归出口&#xff1a;当根节点为空时&#xff0c;返回 0 单层递归逻辑&#xff1a;特殊情况处理&#xff1a;当…

【区块链 + 人才服务】区块链教学管理平台 | FISCO BCOS应用案例

面对传统教育行业存在的教育过程难监督、教育信息不公开、教育效果难认定、教务管理缺抓手、数据造假和证 书局限性等诸多痛点问题。北京奕江科技有限公司基于 FISCO BCOS 底层开发区块链教学管理平台&#xff0c;搭建区块链 教学管理系统、区块链课程学习及实训环境&#xff0…

HTTP中常用的4种请求方式——前端如何发送?后端怎么接受?

一.Get请求&#xff1a; 1.什么是Get请求&#xff1f; 2.前后端如何使用Get交互&#xff1f; 2.1.Query参数格式的Get请求 2.2.Path参数格式的Get请求 二.Post请求&#xff1a; 1.什么是Post请求&#xff1f; 2.前后端如何使用Post交互&#xff1f; 三.Put请求&#xf…

C语言代码练习(第十五天)

今日练习&#xff1a; 37、输入连个正整数 n 和 m &#xff0c;求其最大公约数和最小公倍数 38、请编程序将“China”翻译成密码&#xff0c;密码规律是&#xff1a;用原来的字母后面第4个字符代替原来的字母 39、设半径 r 1.5&#xff0c;圆柱高 h 3&#xff0c;求圆周长、圆…

优化 spring boot 的启动速度

优化Spring Boot应用的启动速度可以采取以下几个策略&#xff1a; 最小化依赖&#xff1a;检查项目是否有不必要的依赖&#xff0c;特别是那些启动时不使用的库。使用spring-boot-starter-web而不是spring-boot-starter-tomcat可以减少一些默认依赖。 懒加载组件&#xff1a;使…

Linux中Ubuntu系统安装Windows得字体

背景 安装了geoserver 然后geoserver中需要用到微软雅黑字体 所以需要安装一下Linux系统安装Windows中的字体 创建字体目录 cd /usr/share/fonts/ mkdir winfont在Windows找到对应字体 C:\Windows\Fonts 复制该字体到桌面 Linux系统中上传字体 roottest-server03:/usr/sha…