最开始使用暴力解法,而后看过官方思路教程后,写了双指针的解题代码
先展示代码:
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代表上一个值和目前值进行比对,看谁最大
当最左边大于最右边表示双方指针溢出,所以停止比对循环。
当循环结束后返回最大值。