当前位置: 首页 > 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.lryc.cn/news/604645.html

    相关文章:

  • Day 26 函数专题1:函数定义与参数
  • 少林寺用什么数据库?
  • pycharm的一些小细节
  • Linux:haproxy
  • jmeter实战案例
  • JavaWeb 进阶:Vue.js 与 Spring Boot 全栈开发实战(Java 开发者视角)
  • 基于React+Express的前后端分离的个人相册管理系统
  • 使用Docker 在Rocky Linux 9.5上在线安装Dify
  • 八股文场景题
  • 从一开始的网络攻防(十四):WAF绕过
  • KONG API Gateway中的核心概念
  • 聊聊如何判断发现的缺陷属于前后端
  • 【Dolphinscheduler】docker搭建dolphinscheduler集群并与安全的CDH集成
  • winsock socket通讯为什么UDP服务器无法获取客户端IP?
  • UDP通讯和TCP通讯的区别-UDP(用户数据报协议)和 TCP(传输控制协议)
  • BeeWorks Meet:私有化部署,重塑高安全需求行业的视频会议体验
  • 云计算:一场关于“数字水电煤”的革命与未来
  • LoongCollector 安全日志接入实践:企业级防火墙场景的日志标准化采集
  • java~单例设计模式
  • react19更新哪些东西
  • 如何通过IT-Tools与CPolar构建无缝开发通道?
  • 第十七章 追新词
  • 7.Linux :进程管理,进程控制与计划任务
  • LLM—— 基于 MCP 协议(Streamable HTTP 模式)的工具调用实践
  • 【拓扑排序】P2403 [SDOI2010] 所驼门王的宝藏|省选-
  • Redis学习------缓存雪崩
  • 01初识算法:从零开始的思维之旅
  • 【Spring Cloud】Spring Cloud 跨域解决方案深度剖析与工程实践指南(万字详解)
  • docker 安装elasticsearch
  • uniapp中的$vm