극좌 극우로 부터 시작해서, 높이가 낮은 사이드를 당기면서 최대값을 갱신하면 된다.
낮은 쪽을 당기는 이유는, 낮은 쪽 사이드가 정답일 경우가 없기 때문.(현재 최대값이 정답인 경우를 제외하고)
class Solution:
def maxArea(self, height: List[int]) -> int:
left = 0
right = len(height) - 1
ret = 0
while(left < right):
ret = max(ret, (right - left) * min(height[right], height[left]))
if height[left] < height[right]:
left += 1
else:
right -= 1
return ret