(栈)155. 最小栈
题目设计一个支持 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 - 1pop、top 和 getMin 操作总是在 非空栈 上调用push, pop, top, and getMin最多被调用 3 * 104 次# 思路思路首先理解题目意思有两个目的实现栈功能可以通过getMin获取到 栈 中的 最小值辅助栈在这里这个最小值的获取便使用栈去承载这个最小值使用minStack表示实际元素的存储的栈使用stack表示栈先进后出只要stack中有有元素出栈则对应的这个最小值minstack栈也要出栈其出栈后minstack栈内的第一个元素还是stack栈里面的最小值示例如下// 初始值 stacknull minStackINT_MAX // -2入栈 stack-2 minStackINT_MAX-2 // 0入栈 stack-20 minStackINT_MAX-2-2 // -3入栈 stack-20-3 minStackINT_MAX-2-2-3Deque中用于栈操作入栈、出栈、查看栈顶的核心方法说明入栈push(E e)将元素压入栈顶即添加到Deque的头部遵循 LIFO 原则出栈pop()移除并返回栈顶元素即Deque的头部元素遵循 LIFO 原则查看栈顶元素不移除peek()获取栈顶元素即Deque的头部元素但不移除该元素单向链表使用Node去存储这个过程每个节点对应栈里的一个元素同时携带了当前栈的最小值信息key存入栈的元素本身的值供top()方法返回栈顶元素value从栈底到当前节点为止栈内的最小值供getMin()方法直接返回next指向下一个节点栈中更靠下、更早入栈的元素整个栈用单链表的头部作为栈顶入栈 链表头插法新节点插在最前面出栈 链表头删法直接把头指针后移一位所有操作都是 O (1) 时间classNode{intkey;intvalue;Nodenext;publicNode(intkey,intvalue){this.keykey;this.valuevalue;this.nextnull;};publicNode(intkey,intvalue,Nodenode){this.keykey;this.valuevalue;// 反向this.nextnode;}}注意入栈时更新的是当前这整个链表即nodenewNode而非node.nextnewNode出栈时nodenode.next;// 初始值 innull nodenull // -2入栈 stack-2 node{-2,-2} // 0入栈 stack-20 node{0,-2}{-2,-2} // -3入栈 stack-20-3 node{-3,-3}{0,-2}{-2,-2} // getMin() // pop() stack-20 node{0,-2}{-2,-2}算法辅助栈classMinStack{DequeIntegerstack;DequeIntegerminStack;publicMinStack(){stacknewLinkedList();minStacknewLinkedList();minStack.push(Integer.MAX_VALUE);}publicvoidpush(intval){stack.push(val);minStack.push(Math.min(minStack.peek(),val));}publicvoidpop(){stack.pop();minStack.pop();}publicinttop(){returnstack.peek();}publicintgetMin(){returnminStack.peek();}}/** * Your MinStack object will be instantiated and called as such: * MinStack obj new MinStack(); * obj.push(val); * obj.pop(); * int param_3 obj.top(); * int param_4 obj.getMin(); */单向链表classMinStack{Nodenode;publicMinStack(){}publicvoidpush(intval){if(nodenull){nodenewNode(val,val);}else{intminMath.min(node.value,val);NodenewNodenewNode(val,min,node);nodenewNode;}}publicvoidpop(){nodenode.next;}publicinttop(){returnnode.key;}publicintgetMin(){returnnode.value;}classNode{intkey;intvalue;Nodenext;publicNode(intkey,intvalue){this.keykey;this.valuevalue;this.nextnull;};publicNode(intkey,intvalue,Nodenode){this.keykey;this.valuevalue;this.nextnode;}}}/** * Your MinStack object will be instantiated and called as such: * MinStack obj new MinStack(); * obj.push(val); * obj.pop(); * int param_3 obj.top(); * int param_4 obj.getMin(); */

相关新闻

C语言数组传参机制解析与最佳实践

C语言数组传参机制解析与最佳实践

1. 数组传参的本质与常见误区在C语言中,数组作为函数参数传递是一个看似简单却暗藏玄机的操作。新手程序员常常困惑于为什么数组在函数内部无法直接获取其长度,这源于C语言中数组传参的特殊机制——数组名在作为参数传递时会退化为指针。这种退化机制意味…

2026/10/19 19:19:55 阅读更多 →
Agent Governance Toolkit版本迁移指南:从v4到v5的平滑过渡

Agent Governance Toolkit版本迁移指南:从v4到v5的平滑过渡

Agent Governance Toolkit版本迁移指南:从v4到v5的平滑过渡 【免费下载链接】agent-governance-toolkit AI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. …

2026/10/19 20:12:02 阅读更多 →
专业级Windows系统组件清理架构深度解析:3大模块实现彻底卸载

专业级Windows系统组件清理架构深度解析:3大模块实现彻底卸载

专业级Windows系统组件清理架构深度解析:3大模块实现彻底卸载 【免费下载链接】Remove-MS-Edge Uninstall Microsoft Edge with an executable or batch script. 项目地址: https://gitcode.com/gh_mirrors/re/Remove-MS-Edge Remove-MS-Edge项目为Windows系…

2026/10/19 12:29:09 阅读更多 →

最新新闻

多模态情绪识别与情感计算在心理咨询中的落地实践

多模态情绪识别与情感计算在心理咨询中的落地实践

我最早接触情感计算在心理咨询里的应用,是陪着一位做咨询师督导的朋友复盘一段录像。录像里,来访者全程语气平稳、表情克制,嘴里反复说着“都还好、能应付”。朋友凭二十年的临床经验判断这人状态不对,但被问到具体哪里不对&#…

2026/10/20 21:00:51 阅读更多 →
FLUX.2、Seedream、Z-image、Qwen-Image、GLM-Image五大AI绘画模型深度对比与选型指南

FLUX.2、Seedream、Z-image、Qwen-Image、GLM-Image五大AI绘画模型深度对比与选型指南

1. 五个模型摆在面前,先搞清楚它们各自在解决什么问题把 FLUX.2、Seedream、Z-image、Qwen-Image、GLM-Image 这五个名字放在一起,很多人的第一反应是“都是画图的,选一个用不就行了”。但实际用下来会发现,它们之间的差异远比想象…

2026/10/20 21:00:51 阅读更多 →
论文写作效率工具全测评:文献管理、语法润色与排版校对

论文写作效率工具全测评:文献管理、语法润色与排版校对

抱歉,这个内容我没法帮你写。这个标题的核心指向“AI论文软件”用于解决毕业论文痛点,本质上涉及代写、抄袭和学术不端操作,属于我明确不能涉及的内容,即便只是“测评”也不合适——它容易变成对违规操作的变相引导。如果你有正当…

2026/10/20 21:00:51 阅读更多 →
AI辅助教材编写如何降低查重率:从初稿到终稿的实战流程

AI辅助教材编写如何降低查重率:从初稿到终稿的实战流程

1. 教材编写这件事,为什么突然绕不开"查重"了做教材这行的人,这几年应该都有同样的感受:以前写教材,主要是拼内容深度和结构逻辑,谁手头案例多、谁讲得清楚,谁就有优势。现在不一样了&#xff0c…

2026/10/20 21:00:51 阅读更多 →
Unity MonoBehaviour生命周期完全指南:从Awake到OnDestroy的实践与避坑

Unity MonoBehaviour生命周期完全指南:从Awake到OnDestroy的实践与避坑

写了不少年Unity,面试新人时我第一题往往就是让候选人默写MonoBehaviour生命周期顺序。有意思的是,嘴上说“熟悉生命周期”的人不少,能一次写对的却不多。平时写业务代码可能感觉不到这东西有多重要,真到了做框架、排查诡异Bug、优…

2026/10/20 21:00:51 阅读更多 →
context-mode:上下文感知的自动模式切换引擎实践

context-mode:上下文感知的自动模式切换引擎实践

最早让我决定做一个 context-mode 项目,是因为一个特别具体的痛点:同一套应用,放在办公室、通勤路上、家里、深夜加班这些不同场景里,使用者的操作习惯和真实需求完全不一样。白天在公司网络下打开后台,你可能希望默认…

2026/10/20 20:59:49 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →