力扣链接:https://leetcode-cn.com/probl...
解题思路:

  1. 接雨水这个问题算是数组中比拟经典的问题,还是先指出要害算法:双指针
  2. 接下来还是老办法,分析题干,由题目可知,因为数组的下标能够看作是横坐标,数组的值能够看作是纵坐标,所以盛雨水最多,实际上是数组中能够围成的最大面积,那么这个最大面积如何计算呢?就是长*高,即数组下标和值所能围成的最大面积
  3. 采纳双指针,慢指针指向数组头,快指针指向数组尾部,面积为快指针下标-慢指针下标与两个下标中较小的高度乘积,记录这个值,当有更大的时候替换这个值
  4. 数组如果遍历,那天然是较矮的往两头挪动,直到两个指针相遇
func maxArea(height []int) int {    n := len(height)    l, r, max := 0, n-1, 0    for l < r {        m := (r - l) * min(height[l], height[r])        if max < m {            max = m        }        if height[l] < height[r] {            l++        } else {            r--        }    }    return max}func min(x, y int) int {    if x < y {        return x    }    return y}func max(x, y int) int {    if x > y {        return x    }    return y}