算法面试——栈与队列:单调栈、双栈实现队列
栈和队列是面试高频基础结构重点考察单调栈和用栈实现队列这两类变形题。这篇把经典题全部整理出来代码直接可跑。一、用两个栈实现队列队列先进先出栈后进先出。用两个栈入队栈 出队栈。classMyQueue{DequeIntegerinStacknewArrayDeque();DequeIntegeroutStacknewArrayDeque();publicvoidpush(intx){inStack.push(x);}publicintpop(){if(outStack.isEmpty()){// 把入队栈全部倒入出队栈顺序就反过来了while(!inStack.isEmpty()){outStack.push(inStack.pop());}}returnoutStack.pop();}publicintpeek(){if(outStack.isEmpty()){while(!inStack.isEmpty()){outStack.push(inStack.pop());}}returnoutStack.peek();}publicbooleanempty(){returninStack.isEmpty()outStack.isEmpty();}}摊还复杂度 O(1)每个元素最多被倒两次入栈出栈。二、有效的括号publicbooleanisValid(Strings){DequeCharacterstacknewArrayDeque();for(charc:s.toCharArray()){if(c(||c[||c{){stack.push(c);}else{if(stack.isEmpty())returnfalse;chartopstack.pop();if(c)top!()returnfalse;if(c]top![)returnfalse;if(c}top!{)returnfalse;}}returnstack.isEmpty();}三、单调栈下一个更大元素核心思想栈内元素单调递减遇到更大元素就出栈结算。// LeetCode 739 每日温度返回每个元素后面第一个更大元素的距离publicint[]dailyTemperatures(int[]temperatures){intntemperatures.length;int[]resultnewint[n];DequeIntegerstacknewArrayDeque();// 存下标for(inti0;in;i){// 当前温度比栈顶高 → 栈顶出栈它的答案就是 iwhile(!stack.isEmpty()temperatures[i]temperatures[stack.peek()]){intidxstack.pop();result[idx]i-idx;}stack.push(i);}returnresult;// 没出栈的默认0说明后面没有更大温度}单调栈模板总结找右边第一个更大 → 从左往右栈单调递减 找左边第一个更大 → 从右往左栈单调递减 找右边第一个更小 → 从左往右栈单调递增四、最小栈实现一个栈支持 O(1) 获取栈内最小值。classMinStack{DequeIntegerdatanewArrayDeque();DequeIntegerminnewArrayDeque();// 辅助栈同步维护最小值publicvoidpush(intval){data.push(val);// 辅助栈顶存当前最小值if(min.isEmpty()||valmin.peek()){min.push(val);}else{min.push(min.peek());}}publicvoidpop(){data.pop();min.pop();}publicinttop(){returndata.peek();}publicintgetMin(){returnmin.peek();}}总结栈和队列题目核心就两类括号匹配类直接模拟和单调栈类下一个更大/更小元素。单调栈记住口诀“栈内有序、出栈结算”几乎所有单调栈题都能套模板。时间复杂度 O(n) 单次遍历比暴力 O(n²) 高效得多。 觉得有用的话点赞 关注【张老师技术栈】吧

相关新闻

华凌N8HE1Ⅱ大2匹空调拆解:神机二代配置解析与选购指南

华凌N8HE1Ⅱ大2匹空调拆解:神机二代配置解析与选购指南

最近在帮朋友选购空调时,发现很多人在“神机”和“二代神机”之间纠结,特别是华凌的 KFR-50GW/N8HE1Ⅱ 这款大2匹挂机。网上信息零散,参数对比不直观,很多人不清楚所谓的“再降价”背后,配置到底有没有缩水&#xff0c…

2026/10/8 6:43:53 阅读更多 →
Python 多线程与多进程并发编程实战

Python 多线程与多进程并发编程实战

Python 并发编程绕不开 GIL,很多人被它坑过。这篇讲清多线程、多进程怎么选、怎么写,附爬虫和 CPU 密集型两个实战例子。 一、多线程:IO 密集型用 thread import threading import timedef download(url):print(f"开始下载: {url}"…

2026/10/16 16:30:29 阅读更多 →
UML建模在在线购物系统开发中的应用与实践

UML建模在在线购物系统开发中的应用与实践

1. 为什么在线购物系统需要UML建模在开发一个在线购物系统时,UML(统一建模语言)就像建筑师的蓝图一样不可或缺。想象一下,你要建造一栋大楼,没有设计图纸就直接开工,结果会怎样?同样的道理&…

2026/10/17 12:27:06 阅读更多 →

最新新闻

Git cherry-pick实战:精准移植提交与解决冲突指南

Git cherry-pick实战:精准移植提交与解决冲突指南

Git 里有一个特别容易让人忽略、但几乎每个项目都迟早会用到的操作:把另一个分支上的某个提交单独搬过来。你不想整个分支合并过来,也不想去 rebase 一堆无关提交,就只想把那个修复了 bug 的提交拿过来,这时候git cherry-pick就是正解。这篇的内容完全围绕这个场景展开:什么时候…

2026/10/18 21:48:12 阅读更多 →
64位C/C++开发库dmoci在VC工程中的集成与避坑指南

64位C/C++开发库dmoci在VC工程中的集成与避坑指南

简介:dmoci开发库是面向C/C程序员的开发工具包,专用于Windows 64位环境下对接达梦7数据库,通过DMOCI接口实现数据查询、事务处理与错误管理等操作,适合需要在Visual C工程中集成国产数据库的开发者使用。资源包为zip格式&#xff…

2026/10/18 21:48:12 阅读更多 →
C#调用FOCAS实现FANUC数控机床实时参数采集

C#调用FOCAS实现FANUC数控机床实时参数采集

简介:本资源是一套基于C#开发的CNC机床FOCAS协议参数采集完整工程,面向工业自动化领域的.NET开发者、智能制造系统集成工程师及高校机电/自动化专业师生,解决Fanuc数控设备实时数据对接与状态监控的技术落地问题。压缩包含51个文件&#xff0…

2026/10/18 21:48:12 阅读更多 →
CPU工作原理与内部结构:从指令执行到性能优化

CPU工作原理与内部结构:从指令执行到性能优化

有一类问题特别能暴露一个人对计算机的理解深度:CPU 到底是怎么工作的?主频高一定快吗?缓存到底有什么用?很多朋友能熟练写代码、调接口,但一碰到这些底层的"为什么",就只剩下一个模糊的念头——…

2026/10/18 21:48:12 阅读更多 →
JDK 1.7.0_64 免安装版:解决 UnsupportedClassVersionError 的精准方案

JDK 1.7.0_64 免安装版:解决 UnsupportedClassVersionError 的精准方案

简介:本资源为JDK 1.7.0_64免安装版,面向Java初学者、嵌入式开发人员及需快速搭建轻量Java环境的工程师,解决无管理员权限、临时调试或多版本并存场景下的环境部署难题。压缩包共1574个文件,以520个核心jar库(含JRE运行…

2026/10/18 21:48:12 阅读更多 →
OpenHarmony奖品详情页开发:从数据模型到状态管理全解析

OpenHarmony奖品详情页开发:从数据模型到状态管理全解析

我先把前面五篇的进度简单对一下,免得有读者是从这一篇才跟上来的:目前这个幸运大转盘项目已经完成了转盘主界面、抽奖动画、奖品管理、中奖记录和中奖弹窗这几个核心模块。这一篇要补上的奖品详情,其实是把"用户点开某个奖品图标之后看…

2026/10/18 21:47:12 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →