Container With Most Water

Given n non-negative integers a_1, a_2, ..., a_n , where each represents a point at coordinate (i, a_i). n vertical lines are drawn such that the two endpoints of line i is at (i, a_i) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water. Tags: Array

Try It!

Discussion

Video

Solution

class Solution:
    def maxArea(self, height: List[int]) -> int:
        lo = 0
        hi = len(height) - 1
        max_area = 0
        while lo < hi:
            if height[lo] < height[hi]:
                area = height[lo] * (hi - lo)
                if area > max_area:
                    max_area = area
                lo += 1
            else:
                area = height[hi] * (hi - lo)
                if area > max_area:
                    max_area = area
                hi -= 1
        return max_area