大家好,欢迎来到《算法面试60讲(2026最新版·全真题带解析)》的第13篇内容!在上一篇中,我们掌握了栈的核心特性、底层实现(数组版+链表版)以及基础应用真题(有效的括号、最小栈),夯实了栈的基础知识点。本节课我们将进入栈的进阶内容——单调栈,这是算法面试中的“高频难点”,广泛应用于解决“找下一个更大/更小元素”“求区间最值”等场景,也是大厂社招、校招进阶面试的重点考查内容。
很多同学在学习单调栈时,容易陷入“听懂理论但不会应用”“能写出代码但无法优化时间复杂度”的困境。单调栈的核心是“维护栈内元素的单调性”,看似简单,却能将原本O(n²)复杂度的问题优化到O(n),是面试官判断候选人算法优化能力的重要依据。本节课将以“单调栈核心思想+真题实战”为核心,拆解单调栈的定义、核心应用场景、解题模板,再讲解3道高频进阶真题,帮你从原理到实战,彻底吃透单调栈,面试时从容应对手撕和追问,无需依赖前序篇章知识。
核心重点:单调栈的核心定义与单调性维护、单调栈的3类核心应用(找下一个更大/更小元素、区间最值)、高频进阶真题(柱状图中最大的矩形、接雨水、下一个更大元素),全程围绕面试场景展开,拒绝冗余,直击考点,所有代码可直接手撕复用。
一、单调栈核心认知(面试必背,突破难点)
在开始真题实战前,我们先明确单调栈的核心定义、特性和适用场景——这是掌握单调栈的关键,也是面试中面试官常问的基础问题,必须牢记,避免基础失分。
1. 单调栈的定义:单调栈(Monotonic Stack)是一种“栈内元素保持严格单调性”的特殊栈,分为两种核心类型,也是面试中最常用的两种:
单调递增栈:栈内元素从栈底到栈顶,严格递增(或非递减),即栈顶元素是当前栈中最大(