LeetCode42接雨水问题
LeetCode42
首先,单独来看每一个柱子,每一个柱子上边能乘的雨水和三个东西有关系。左边的最大值和右边的最大值和自己的高度。用公式来表示就是:
curWater = Min(lMax, rMax) - curHeight
思路清晰了之后,这道题有很多解法。比如比较麻烦的方法先遍历一遍找出最大值,之后在最大值左边和右边遍历。最大值左边的rMax就是这个最大值。这种方法需要遍历两遍。不是最优解。
还有一种方法是可以遍历一遍就出结果的。那就是单调栈。
单调栈就是维护一个“头重脚轻“的栈。如果有大于栈顶的
原创
2020-06-16 20:45:22 ·
127 阅读 ·
0 评论