最开始使用暴力解法,而后看过官方思路教程后,写了双指针的解题代码
先展示代码:

func maxArea(height []int) int {
    //双指针
    res, i, j := 0, 0, len(height)-1
    for i < j {
        //计算
        ares := (j - i) * int(math.Min(float64(height[i]), float64(height[j])))
        res = int(math.Max(float64(res), float64(ares)))
        if height[i] < height[j] {
            i++
        } else {
            j--
        }
    }
    return res
}

详解:i,j代表最左边和最右边的索引位置。
ares代表储存上一个计算宽度得到的值。
res代表上一个值和目前值进行比对,看谁最大
当最左边大于最右边表示双方指针溢出,所以停止比对循环。
当循环结束后返回最大值。

最后修改:2021 年 07 月 15 日
如果觉得我的文章对你有用,请随意赞赏