初始时默认选择最左边和最右边的柱子,下次只需向中心移动较小的柱子,因为移动大柱子会导致左右柱子距离变小,但是盛水的高度由于受到小柱子限制不会变高。
所以我们只需要向中心移动小柱子才有可能使得盛水高度变高,在宽度变窄的情况下也可能会使得整体的面积大于之前的。
class Solution:
def maxArea(self, height: List[int]) -> int:
left = 0
right = len(height) - 1
res = 0
while left < right:
res = max(res, min(height[left], height[right])*(right-left))
if height[left] < height[right]:
left += 1
else:
right -= 1
return res