Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

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.

image

The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.

Example:

Input: [1,8,6,2,5,4,8,3,7] Output: 49

My code:

class Solution:
    def maxArea_pre(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        max_value=0
        for i in range(len(height)-1):
            for j in range(i+1,len(height)):
                h=min([height[i],height[j]])
                contain=(j-i)*h
                if max_value<contain:
                    max_value=contain
        return max_value
    def maxArea(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        i=0
        j=len(height)-1
        max_value=0
        while i<j:
            result=min([height[i],height[j]]) *(j-i)    
            if height[i]>height[j]:
                j-=1
            else:
                i=i+1
            if max_value<result:
                max_value=result
        return max_value

Solution: https://leetcode.com/problems/container-with-most-water/