题目11:盛最多水的容器
题目描述:
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量
题解:
本题是看了别人的题解思路。
最重要的一点是:盛水量是由短板决定的,当向中间移动短板的时候,两板之间的短板可能会变大;但向中间移动长板时,两板之间的短板只可能是变小或者不变。因此每次只移动短板并记录最大面积。
func maxArea(height []int) int {
area := 0
for i, j := 0, len(height)-1; i< j ;{
if height[i] >= height[j]{
area = max(area, height[j]*(j-i))
j--
}else{
area = max(area, height[i]*(j-i))
i++
}
}
return area
}