# Given n non-negative integers a1, a2, ..., an,
# where each represents a point at coordinate (i, ai).
# n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0).
# Find two lines, which together with x-axis forms a container,
# such that the container contains the most water.
#
# Note:
# You may not slant the container and n is at least 2.
AC
class Solution():
def maxArea(self, height):
max_area, left, right = 0, 0, len(height) - 1
while left < right:
max_area = max(max_area, min(height[left], height[right]) * (right - left))
if height[left] < height[right]:
left += 1
else:
right -= 1
return max_area
if __name__ == "__main__":
height = [1, 2, 3, 4, 3, 2, 1, 5]
assert Solution().maxArea(height) == 16