一、题目介绍
接雨水是面试时经常考察的算法题,见LeetCode 42. 接雨水,题目描述如下:

该题可以用暴力解法求解,或者用双指针法优化暴力解法。这里只介绍单调栈解法。
二、单调栈解法
单调栈就是保持栈内元素有序。和【算法】代码随想录刷题记录 | 5. 栈与队列篇中的LeetCode 347. 前K个高频元素使用的优先队列一样,需要我们自己维持顺序,没有现成的容器可以用。
通常是一维数组要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。
而接雨水这道题目,我们正需要寻找一个元素,右边最大元素以及左边最大元素,来计算雨水面积。
那么本题使用单调栈有如下几个问题:
1. 首先单调栈是按照行方向来计算雨水,如图:

最低0.47元/天 解锁文章
2166





