目前为止碰到的做的最顺利的题,没有之一,虽然还是看了答案。。
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.
说人话就是在坐标系的第一象限随便撒一些点,求任意两个点和x轴围城的矩形的最大面积
矩形的面积是长*宽,长由短的一边决定,宽度最大就是第一个点和最后一个点的距离。
这一次是自己的代码😄
class Solution(object):
def maxArea(self, height):
n = len(height)
#从最大宽度开始找,宽度是越来越短,那就只需要找比当前最短的那根长的边,计算新的面积
j=n-1
i=0
maxarea = 0
while(i<j):
maxarea = max(maxarea,(j-i)*min(height[i],height[j]))
#每次更换短边
if height[i]<height[j]:
#找中间比短边长的,作为新的边
k = i+1
while (k<j and height[k]<=height[i]):
k+=1
i=k
else:
k=j-1
while(k>i and height[k]<=height[j]):
k-=1
j=k
return maxarea
网友评论