当前位置: 首页 > news >正文

力扣 hot100 Day60

155. 最小栈

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

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。
class MinStack {
private:stack<int> main_stack;stack<int> min_stack;public:MinStack() {}void push(int val) {main_stack.push(val);if (min_stack.empty() || val <= min_stack.top()) {min_stack.push(val);}}void pop() {if (main_stack.top() == min_stack.top()) {min_stack.pop();}main_stack.pop();}int top() {return main_stack.top();}int getMin() {return min_stack.top();}
};

我的思路是维护一个有序数组,这样就能直接得到当前最小值了

但不必这么复杂,由于这是个栈,所以只会像栈一样读入读出,只需要在栈读入读出时维护一个当前最小值的栈即可

具体来说,入栈时,栈空或当前值小于最小栈顶,同步入最小栈;出栈时,等于最小栈顶则同步出

最小栈中不一定有所有元素,但一定有栈维护时任意时刻的最小值,相当于历史快照,这就足够了

    http://www.dtcms.com/a/306689.html

    相关文章:

  • Rabbit MQ的消息模式-Java原生代码
  • 发那科机器人P点位置号码自动变更功能为禁用状态
  • 认识ansible(入门)
  • 《嵌入式C语言笔记(十六):字符串搜索、动态内存与函数指针精要》
  • RocketMQ 核心特性解析及与 Kafka区别
  • 思途JSP学习 0730
  • DP-v2.1-mem-clean学习(3.6.7)
  • 片上变化(OCV)
  • 7.Origin2021如何绘制拟合数据图?
  • Python 之抽象方法 @abstractmethod 的理解
  • Day06_C++编程
  • 9《MySQL 教程》MySQL 的数据类型(2)
  • 云原生环境里的显示变革:Docker虚拟浏览器与cpolar穿透技术实战
  • 赵义弘-----补题报告
  • 【python】Python爬虫入门教程:使用requests库
  • 【git】在 GitLab 上如何把 A 分支(如 feature/xxx)合并到 B 分支(如 trunk)
  • Scala实现常用排序算法
  • 深入理解 Kotlin Flow:异步数据流处理的艺术
  • MidJourney精选图集与提示词生成器:AI创意灵感与高效提示词工具
  • composer 常用命令
  • 高防CDN与高防IP的选择
  • docker可视化管理工具lazydocker
  • 【百卷编程】Go语言大厂高级面试题集
  • 3GPP TS 38.331 V18.6.0 (2025-06)中文版
  • 工业5G路由器赋能高速公路实时监控
  • 【问题未解决-寻求帮助】VS Code 中使用 Conda 环境,运行 Python 后 PowerShell 终端输出内容立即消失
  • 《Java 程序设计》第 12 章 - 异常处理
  • T113-i Linux系统完整构建指南:从SDK开箱到内核镜像量产烧录全流程
  • 2025年湖北中级注册安全工程师报考那些事
  • docker 用于将镜像打包为 tar 文件