算法--最小栈

题目

设计一个支持 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.

提示:

-231 <= val <= 231 - 1

pop、top 和 getMin 操作总是在 非空栈 上调用

push, pop, top, and getMin最多被调用 3 * 104 次

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/min-stack

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解决方法

用额外的栈同步记录当前的最小值

kotlin 复制代码
    //一定要知道 栈是单向进出的 所以才可以保证每一步操作都是最小的
    //
    class MinStack() {
        val stack = LinkedList<Int>()
        val miniStack = LinkedList<Int>()

        fun push(`val`: Int) {
            stack.push(`val`)
            if (!miniStack.isEmpty()) {
                miniStack.push(miniStack.peek().coerceAtMost(`val`))
            }else{
                miniStack.push(`val`)
            }
        }

        fun pop() {
            stack.pop()
            miniStack.pop()
        }

        fun top(): Int {
           return stack.peek()
        }

        fun getMin(): Int {
            return miniStack.peek()
        }

    }

总结

好久没有周末来加班了,其实也没有那么累吧。闲着也没事。

提拔亲信确实是领导的必然选择啊 随缘吧

相关推荐
Ivanqhz4 分钟前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
kakakahahahaha8 分钟前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
朝朝辞暮i14 分钟前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
沙漠之主35 分钟前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++
朝朝辞暮i1 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
FPGA小徐1 小时前
PA1 基础设施(2)深度解析:NEMU 中 ITRACE、MTRACE、FTRACE、IRINGBUF、ETRACE、DIFFTEST 全解析
java·服务器·网络
笨笨饿1 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
Godspeed Zhao1 小时前
现代智能雷达技术14——算法(0)
线性代数·算法·雷达
YOLO数据集集合1 小时前
EvoAgent:面向PR研发治理的自进化Multi-Agent Harness系统
java·开发语言·目标检测·agent·自进化
可乐ea1 小时前
Agent 模型分级升级路由:用置信度阈值把贵模型省下来
人工智能·算法·机器学习·结构化输出·置信度路由·模型升级路由·大模型成本优化