解题思路:本题卡了好久。后来想到一种解法,找出数组的最大值a和第二大值b,这两个值将整个数组分成三个区域,左、中、右。中间区域的存水量,可以求得。左和右的存水量继续调用函数即可。
代码如下:
1 | class Solution { |
运行结果:12ms,超过18.07%
另一种解法:
求的每一个点上面,能存多少水,然后相加。从后往前遍历,存储每一个点右边的最高点。从前往后遍历,查得到左边的最高点,看看是不是都比它高,如果是则可以存水;否则无法存水。
代码如下:
1 |
|
运行结果:9ms,超过30.10%