回顾下算法,练习下分析处理问题。
力扣 42接雨水 问题分析思路
https://leetcode-cn.com/problems/trapping-rain-water/
这个题意比较容易理解,初看好像很容易,把大于相邻左右点的位置作为一个凸点,再找相邻的凸点的容纳空间,但是这样的局部观处理是有问题的,下图就是一个反例。
从这个图里可以看出,左边凸点确定后,不能简单的去找下一个凸点作为右边高度,因为后面可以会有一个更大的高度,如5位置,所以左边的位置确定后,需要找到右边第一个大于等于左凸点的位置作为右边的边界。
如果没有大于等于的凸点,应该选择最大的凸点位置作为右边界,按照这个思路持续进行下去。
问题的总体情况在分析的时候要考虑清楚,不然就会出差错。