给出一个非负整数数组 a1,a2,a3,…… an,每个整数标识一个竖立在坐标轴 x 位置的一堵高度为 ai 的墙,选择两堵墙,和 x 轴构成的容器可以容纳最多的水
Input: [1,8,6,2,5,4,8,3,7]
Output: 49
思路如下:
1、首先该题目隐藏掉的最大宽度为首尾元素的下标差
2、从最大宽度开始,逐次减小宽度,依次计算面积,确定出最大面积
func GetMaxArea() {
areaItem := [9]int{1, 8, 6, 2, 5, 4, 8, 3, 7}
start, end, area := 0, len(areaItem)-1, 0
for {
width := end - start
hight := areaItem[start]
if areaItem[start] > areaItem[end] {
hight = areaItem[end]
end--
} else {
start++
}
if width*hight > area {
area = width * hight
}
if start > end {
break
}
}
fmt.Println(area)
}