leetcode——155. 最小栈

news/2024/5/20 23:51:41/文章来源:https://blog.csdn.net/weixin_59055853/article/details/128419761

leetcode——155. 最小栈

  • 🔍题目详情
  • 🤔解题思路
  • 💻代码实现
  • 💬总结

👀先看这里👈
😀作者:江不平
📖博客:江不平的博客
📕学如逆水行舟,不进则退
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
❀本人水平有限,如果发现有错误的地方希望可以告诉我,共同进步👍

🔍题目详情

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop()删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

示例

输入:
[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”]
[[],[-2],[0],[-3],[],[],[],[]]
输出: [null,null,null,null,-3,null,0,-2]

题目来源:力扣(LeetCode)

🤔解题思路

看到取最小,我们第一时间想到用一个变量从第一个位置开始,遇到小的就替换,进行更新,但是这个地方是不可取的,因为这个题目需要的是一个始终保持能找到最小数据的栈。而这个地方假如说这里开始出数据,把最小值给删除了,那么我们就不能很好的找到剩下的最小数据了,需要从头遍历,这就不符合题目的常数时间要求了。我们可以用一个辅助栈来解决这个问题,使得最小的数据被删除后仍然能很好的找到下一个最小的数据。
在这里插入图片描述

  1. 先存储第一个数。
  2. 每次遇到比最小值要小的数据就存储到辅助栈mst上,这里注意等于最小值的数据也要放进去,因为每次删除最小数据后,与它相等的那个数据必然也是最小。
  3. 每次弹出数据后,通过辅助栈更新最小值(往前找)

时间复杂度:O(1)
空间复杂度:O(N)

💻代码实现

c++

class MinStack {
public:MinStack() {}void push(int val) {st.push(val);if(minst.empty()||val<=minst.top()){minst.push(val);}}void pop() {if(st.top()==minst.top()){minst.pop();}st.pop();}int top() {return st.top();}int getMin() {return minst.top();}
private:stack<int> st;stack<int> minst;
};

💬总结

我们充分利用了c++的特性:封装。通过两个栈模拟出最小栈

在这里插入图片描述

觉得还不错的铁汁点赞关注一下吧😀

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

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

相关文章

【信管5.2】估算活动资源与持续时间

估算活动资源与持续时间在经过上次课程的学习后&#xff0c;我们已经了解到了进度、活动的概念及定义&#xff0c;并且简单地学习了下活动顺序如何排列的一些工具技术。今天&#xff0c;我们学习的主要方向是估算活动资源与估算活动持续时间这两个过程&#xff0c;另外我们还会…

WMS类图分析-android12

为什么要分析类图&#xff1f; WMS是一个复杂的模块&#xff0c;就像一个很大的家族&#xff0c;里面有各种角色&#xff0c;认识类图就像是认识WMS模块中的各个角色&#xff0c;不先把人认清楚了&#xff0c;怎么更好的理解他们之间的交互&#xff1f; 我觉得&#xff0c;这…

达梦数据IPO过会:拟募资24亿 光谷“扫地僧”冯裕才将敲钟

雷递网 雷建平 12月23日武汉达梦数据库股份有限公司&#xff08;简称&#xff1a;“达梦数据”&#xff09;日前IPO过会&#xff0c;准备在科创板上市。达梦数据计划募资23.51亿元。其中&#xff0c;3.52亿元用于集群数据库管理系统升级项目&#xff0c;3.43亿元用于高性能分布…

pytorch 多卡运行详细教程

先说明一下背景&#xff0c;目前正在魔改以下这篇论文的代码&#xff1a; https://github.com/QipengGuo/GraphWriter-DGLgithub.com 由于每次完成实验需要5个小时&#xff08;baseline&#xff09;&#xff0c;自己的模型需要更久&#xff08;2倍&#xff09;&#xff0c;非…

2022星空创造营应用创新大赛圆满落幕,获奖名单出炉!

​12月22日&#xff0c;2022星空创造营应用创新大赛在2022手机创新周暨第十届手机设计大赛颁奖典礼上作为特别专场正式公布获奖名单。2022星空创造营应用创新大赛由联通在线、手机设计大赛天鹅奖组委会联合主办&#xff0c;联通在线音乐公司及工信部赛迪研究院共同承办&#xf…

小学生C++编程基础 课程10

938.最小公倍数的简单方法 &#xff08;课程A&#xff09; 难度&#xff1a;1 登录 939.最大公约数的简单方法 ( 课程A&#xff09; 难度&#xff1a;1 登录 940.韩信点兵 &#xff08;课程A&#xff09; 难度&#xff1a;1 登录 941.求123…N的和 &#xff08;课程A&#x…

Spring MVC【返回数据与请求转发和重定向】

Spring MVC【返回数据与请求转发和重定向】&#x1f34e;一. 返回数据&#x1f352;1.1 返回静态页面&#x1f352;1.2 返回一个非静态页面&#x1f352;1.3 返回text/html类型页面&#x1f352;1.4 返回JSON对象&#x1f352;1.5 实现计算器功能&#x1f352;1.6 使用ajax方式…

【算法】P1 算法简介

算法什么是算法正确与错误的算法算法可以解决什么问题本专栏有哪些算法什么是算法 算法 (Algorithm) 取某个值或集合作为 输入&#xff0c;并产生某个值或集合作为 输出。算法就是把输入转换为输出的计算&#xff0c;描述这个计算的过程来实现输入与输出的关系。 正确与错误的…

股票量化分析工具QTYX使用攻略——实盘交易信号监控(更新2.5.7)

搭建自己的量化系统如果要长期在市场中立于不败之地&#xff01;必须要形成一套自己的交易系统。如何学会搭建自己的量化交易系统&#xff1f;边学习边实战&#xff0c;在实战中学习才是最有效地方式。于是我们分享一个即可以用于学习&#xff0c;也可以用于实战炒股分析的量化…

插值算法基本原理

插值&#xff1a;数据处理的手段 将缺失数据补全处理 线性内插 拉格朗日插值法 牛顿插值 拟合&#xff1a;预测&#xff0c;寻找规律的手段 是插值的外延 插值算法&#xff1a;使用在现有的数据极少&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学方法…

【Vue】Vue重写教室管理系统的前端网页V1(前后端分离)--20221222

项目说明 目的 练习并熟悉Vue2 的API&#xff0c;来为Vue项目做准备&#xff1a; 插值语法插槽props和data父子组件通信Ajax异步请求数据生命周期函数methods方法computed属性vue-router、路由守卫、query/params传参、编程函数式路由模拟后端服务器传送数据打包项目 需要加…

Python正在消亡?致命弱点是否会让Python被新语言取代?

被业界称为“瑞士军刀”的编程语言&#xff0c;可能会被更适合该任务的其他语言取代吗&#xff1f; 自从1990年代初Python发布以来&#xff0c;它引起了很多热议。当然&#xff0c;编程社区花了至少20年的时间才逐渐注意到它的存在&#xff0c;而当它一旦开始流行起来&#xf…

Apache DolphinScheduler 发布 3.1.2 版本,Python API 实现优化

点亮 ⭐️ Star 照亮开源之路https://github.com/apache/dolphinscheduler近日&#xff0c;Apache DolphinScheduler 发布了 3.1.2 版本。此版本主要基于 3.1.1 版本进行了 6 处 Python API 优化&#xff0c;19 处 Bug 修复&#xff0c;并更新了 4 个文档。其中较为重要的 Bug…

Doo Prime 提供高达 1000 倍杠杆,助您撬动无限机遇

2022 年 11 月 19 日&#xff0c;Doo Prime 正式将全部账户类型的可选杠杆从 1:500 上调至 1:1000 倍&#xff0c;提供更灵活的杠杆选择&#xff0c;让全球客户有机会以更少的资金撬动更高的潜在利润&#xff0c;进一步拓展投资机遇。 *备注&#xff1a;杠杆调整详情请参阅下文…

JavaDS1-时间复杂度空间复杂度

目录 1.算法效率 1.1.时间效率&#xff08;时间复杂度&#xff09;——衡量算法运行速度 1.2.空间效率&#xff08;空间复杂度&#xff09;——衡量算法所需额外空间&#xff08;如今不再特别关注&#xff09; 2.时间复杂度 2.1.概念 2.2.大O的渐进表示法 2.2.1.O(F(n))…

学到羊之Kafka

1 kafka 是啥 Kafka 是一款开源的消息引擎系统&#xff0c;用来实现解耦的异步式数据传递。即系统 A 发消息给到 消息引擎系统&#xff0c;系统 B 通过消息引擎系统读取 A 发送的消息&#xff0c;在大数据场景下&#xff0c;能达到削峰填谷的效果。 2 Kafka 术语 Kafka 中的分…

day28【代码随想录】回溯之组合、组合总和|||、电话号码的字母组合

文章目录前言一、组合&#xff08;力扣77&#xff09;剪枝优化二、组合总和 III&#xff08;力扣216&#xff09;剪枝优化三、电话号码的字母组合&#xff08;力扣17&#xff09;总结前言 1、组合 2、组合总和||| 3、电话号码的字母组合 一、组合&#xff08;力扣77&#xff0…

解析 Navicat 最受欢迎的功能 | SQL 查询编辑器与 SQL 创建工具

近期发起的线上投票调查中&#xff0c;我们很高兴地看到&#xff1a;SQL 查询编辑器、SQL 创建工具已成为用户最常用的功能之一&#xff0c;并且深受用户欢迎&#xff01;在人类社会发展的历史长河中&#xff0c;离不开工具的演进与发展。而 Navicat 作为领先的数据库管理开发工…

【Pandas入门教程】如何读取和写入表格数据

如何读取和写入表格数据 来源&#xff1a;Pandas官网&#xff1a;https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html 文章目录如何读取和写入表格数据导包【1】如何读取和写入表格数据【2】小结导包 import pandas as pd数据介绍&#xff1a; 使用存…

python--可重用的登录注册系统(上)

文章目录预期目标一、基本逻辑设计数据库模型二、前端界面设计与优化完善登录的视图函数三、session会话与登录的视图函数四、将项目上传到远程仓库预期目标 实现注册&#xff08;邮箱、手机、qq、微信&#xff09; 登录 注销等功能 路由配置 视图配置 数据库模型 模板&#xf…