使用双指针法求解容器盛水最大面积问题。初始时,左右指针分别指向数组首尾。每次计算当前指针位置形成的容器面积,并更新最大面积。通过比较两边高度,移动较小高度的指针(因为移动较大高度的指针不会获得更大面积)。时间复杂度O(n),空间复杂度O(1)。该方法高效地找到最大盛水面积,适用于任意高度的垂线排列。
//用双指针指向首尾,每次移动小的那一边,因为移动小的那一边,面积只会更小,所以移动小的那一边
func maxArea(height []int) int {
left, right := 0, len(height) - 1 // 初始化左右指针
maxArea := 0
for left < right {
area := (right - left) * min(height[left], height[right]) // 计算面积
if area > maxArea {
maxArea = area
}
// 移动小的那一边
if height[left] < height[right] {
left++
} else {
right--
}
}
return maxArea // 返回最大面积
}
1745

被折叠的 条评论
为什么被折叠?



