(栈)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/8/9 20:42:28 阅读更多 →
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/8/9 20:42:28 阅读更多 →
专业级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/8/9 20:41:28 阅读更多 →

最新新闻

5分钟掌握aShell You:终极Android ADB工具完整指南

5分钟掌握aShell You:终极Android ADB工具完整指南

5分钟掌握aShell You:终极Android ADB工具完整指南 【免费下载链接】ashell A material you designed app for your ADB needs 项目地址: https://gitcode.com/gh_mirrors/as/ashell 如果你正在寻找一款功能强大、界面美观的Android ADB工具,那么…

2026/8/9 21:29:00 阅读更多 →
终极指南:如何用biliTickerBuy Python工具轻松搞定B站会员购抢票

终极指南:如何用biliTickerBuy Python工具轻松搞定B站会员购抢票

终极指南:如何用biliTickerBuy Python工具轻松搞定B站会员购抢票 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 还在为B站会员购抢票而焦虑吗?当心仪的门票在几秒钟内售…

2026/8/9 21:29:00 阅读更多 →
CVAT:从数据标注的痛点到AI训练的革命性解决方案

CVAT:从数据标注的痛点到AI训练的革命性解决方案

CVAT:从数据标注的痛点到AI训练的革命性解决方案 【免费下载链接】cvat Computer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as we…

2026/8/9 21:29:00 阅读更多 →
告别命令行:5分钟掌握专业图片元数据管理神器ExifToolGui

告别命令行:5分钟掌握专业图片元数据管理神器ExifToolGui

告别命令行:5分钟掌握专业图片元数据管理神器ExifToolGui 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 还在为批量修改照片拍摄信息而烦恼吗?面对复杂的命令行操作感到束手无策&am…

2026/8/9 21:29:00 阅读更多 →
健身数据集终极指南:如何用1324个多语言健身动作构建你的健身应用

健身数据集终极指南:如何用1324个多语言健身动作构建你的健身应用

健身数据集终极指南:如何用1324个多语言健身动作构建你的健身应用 【免费下载链接】exercises-dataset 1,324-exercise fitness dataset — animation GIFs, 180180 thumbnails, muscle-group & equipment data, and step-by-step instructions in 6 languages.…

2026/8/9 21:29:00 阅读更多 →
Reddit AI Trends:3分钟快速掌握AI领域每日趋势的终极指南

Reddit AI Trends:3分钟快速掌握AI领域每日趋势的终极指南

Reddit AI Trends:3分钟快速掌握AI领域每日趋势的终极指南 【免费下载链接】reddit-ai-trends Stay ahead of AI trends with automated Reddit insights! 🚀 This tool scans AI-related Reddit communities in English & Chinese, using Reddit Of…

2026/8/9 21:28:00 阅读更多 →

日新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/9 17:05:02 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/9 0:45:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/9 17:05:02 阅读更多 →