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.
面积的定义是(j-i)×min(边)
这个题主要在于复杂度的问题,开始使用两个for循环时间复杂度是O(n(n-1)/2),加了些条件判断也还是超时,要达到O(n)的复杂度,就只能用while进行两个边的比较。
def maxArea(self, height: List[int]) -> int:
lenth=len(height)
max_are=0
i=0
j=lenth-1
while i<j:
max_are=max(max_are,(j-i)*min(height[i],height[j]))
if height[i]<height[j]: i+=1
else:j-=1
return max_are