Bare Algo
搜索算法...
Ctrl+K
单调栈
利用单调栈解决下一个更大/更小元素等问题。
算法题
(12)
84. 柱状图中最大的矩形
困难
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。
栈
数组
单调栈
42. 接雨水
困难
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
数组
双指针
动态规划
栈
单调栈
739. 每日温度
中等
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。
栈
数组
单调栈
496. 下一个更大元素 I
简单
nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。
栈
数组
哈希表
单调栈
503. 下一个更大元素 II
中等
给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。
栈
数组
单调栈
907. 子数组的最小值之和
中等
给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。
栈
数组
动态规划
单调栈
901. 股票价格跨度
中等
设计一个算法收集某些股票的每日报价,并返回该股票当日价格的 跨度 。当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数。
栈
设计
数据流
单调栈
402. 移掉 K 位数字
中等
给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。
栈
贪心
字符串
单调栈
316. 去除重复字母
中等
给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。
栈
字符串
贪心
单调栈
2104. 子数组范围和
中等
给你一个整数数组 nums 。nums 中,子数组的 范围 是子数组中最大元素和最小元素的差值。返回 nums 中 所有 子数组范围的 和 。
栈
数组
单调栈
456. 132 模式
中等
给你一个整数数组 nums,其中 n = nums.length。如果 nums 中存在 132 模式的子序列 ,则返回 true;否则,返回 false。
栈
数组
二分查找
单调栈
1856. 子数组最小乘积的最大值
中等
一个数组的 最小乘积 定义为这个数组中 最小值 乘以 数组的 和 。给你一个正整数数组 nums ,请你返回 nums 任意 非空子数组 的最小乘积 的 最大值 。
栈
数组
前缀和
单调栈
实际应用
(4)
图表 Next Greater/Lower
中等
在股票 K 线图或滚动列表中,查找当前元素“后面第一个比它大/小”的值,用于绘制趋势线或确定可视范围边界。
单调栈
可视化
统计
直方图最大矩形/占位估算
困难
在瀑布流布局或拖拽网格中,计算可用空间的最大矩形面积,以确定组件可以放置的最佳位置或大小。
单调栈
布局
计算
接雨水/凹凸面积统计
困难
在数据可视化中,统计柱状图或地形数据的凹陷区域面积(类似于“接雨水”),用于分析数据波动或异常区间。
单调栈
可视化
分析
边界查找性能优化
中等
在需要频繁查找最近的大小边界的交互场景中(如吸附对齐),将 O(N²) 的暴力查找优化为 O(N) 的线性时间操作。
单调栈
性能优化
交互