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

leetcode155.最小栈

设计一个支持 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<Integer> stack;
    Stack<Integer> min;// 常数复杂度获取最小值用辅助栈,栈顶是最小元素
    public MinStack() {
        stack=new Stack<>();
        min=new Stack<>();
    }

    public void push(int val) {
        stack.push(val);
        if(min.empty()||val<=min.peek())
            min.push(val);
    }

    public void pop() {
        if(min.peek().equals(stack.peek()))
            min.pop();
        stack.pop();

    }

    public int top() {
        return stack.peek();
    }

    public int getMin() {
        return min.peek();
    }
}


http://www.kler.cn/a/470829.html

相关文章:

  • 51单片机——中断(重点)
  • Maven 详细配置:Maven 项目 POM 文件解读
  • 外驱功率管电流型PWM控制芯片CRE6281B1
  • 【linux系统之redis6】redis的安装与初始化
  • STM32U575按键转换及设备驱动
  • 使用图像过滤器在 C# 中执行边缘检测、平滑、浮雕等
  • python学opencv|读取图像(二十七)使用time()绘制弹球动画
  • 企业二要素如何用C#实现
  • Scala语言的数据库交互
  • STM32-笔记30-串口间的通信
  • python常见绘图及代码
  • 技术文档撰写之道:构建清晰准确的知识传递桥梁
  • 【Java设计模式-1】单例模式,Java世界的“独苗”
  • C++中decltype遇到引用类型时的隐藏陷阱
  • 算法解析-经典150(矩阵、哈希表)
  • Redis - 6 ( 9000 字 Redis 入门级教程 )
  • 【快速入门 LVGL】-- 1、STM32 工程移植 LVGL
  • 深入了解SCPI协议:半导体测试与仪器自动化的核心
  • C语言——字符函数和内存函数
  • pikachu靶场--目录遍历和敏感信息泄露
  • 概率基本概念 --- 离散型随机变量实例
  • NLP 中文拼写检测纠正论文-08-Combining ResNet and Transformer
  • React Router 向路由组件传state参数浏览器回退历史页面显示效果问题
  • Vue.js组件开发-在setup函数中使用provide
  • 41.5 nginx拦截prometheus查询请求使用lua脚本做promql的检查替换
  • 少儿编程|基于SSM+vue的少儿编程管理系统的设计与实现(源码+数据库+文档)