盛水最多的容器

11 阅读1分钟

双指针法,这个数量是有限的,两个指针逐渐向中间逼近,找到面积最大的值即可

func maxArea(height []int) int {
	end := len(height) - 1
	left, right := 0, end
	maxVal := (right - left) * min(height[left], height[right])
	//移动短指针
	for left < right {
		if height[left] < height[right] {
			left++
		} else {
			right--
		}
		//重新计算并更新最大值
		val := (right - left) * min(height[left], height[right])
		if val > maxVal {
			maxVal = val
		}
	}
	return maxVal
}