思路:初始化i=0,j=len(height)-1
,保持较大的高度位置不变,然后将较小的位置改变,以求的最大的面积。若将较大的高度的位置改变,那么最大的面积会受限于较小于的高度,不会获得最大的高度。但是将较小的高度位置改变,虽然宽度变小了,但是有可能通过高度来抵消掉。
# -*- coding:utf-8 -*-
class Solution(object):
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
length,max_area=len(height),0
#i置为数组的第一个元素的位置,j为最后一个元素的位置
i,j,pos=0,length-1,{}
while i<j:
max_area=max((j-i)*min(height[i],height[j]),max_area)#取得最大值
#较大的高度保持位置不变,改变较小的高度
if height[i]>height[j]:
j=j-1
else:
i=i+1
return max_area