【以下回答由 GPT 生成】
对于当前左右指针指向的高度相同的情况,无论移动左指针还是右指针,容器的宽度都会减小,而我们的目标是找到容器中能装最多水的情况。所以我们应该考虑移动高度较小的指针,因为容器的高度受限于较小的那个线段的高度。
具体解决方案如下:
left
为数组起始位置,右指针right
为数组末尾位置。area = (right - left) * min(height[left], height[right])
,其中height
为给定数组。max_area
。height[left]
和height[right]
的大小:height[left] < height[right]
,则移动左指针向右移动一格,即left += 1
。right -= 1
。max_area
。以下是代码实现的示例:
def max_area(height):
left = 0
right = len(height) - 1
max_area = 0
while left < right:
area = (right - left) * min(height[left], height[right])
max_area = max(max_area, area)
if height[left] < height[right]:
left += 1
else:
right -= 1
return max_area
上述代码的时间复杂度为O(n),其中n为数组的长度。
【相关推荐】