题目描述
给一组非负整数数组,每个整数代表容器壁的高度,然后求最大的容量
思路
假设有一个数组a1,a2,a3.....,其中a1和a20组成的容器容量最大。容量计算公式maxa=max((right-left)min(height[left],height[right]),maxa)。我们可以看到如果a10>a21时,我们右侧的指针需要向左移,因为如果a10<a21时,此时a10(20-10)<a10*(21-10)。
代码实现
class Solution:
def maxArea(self, height: 'List[int]') -> 'int':
# 代码超时
# maxa=0
# for i in range(len(height)-1):
# cura=0
# for j in range(i,len(height)):
# cura=(j-i)*min(height[j],height[i])
# if cura>maxa:
# maxa=cura
# return maxa
left,right=0,len(height)-1
maxa=0
while left<right:
maxa=max((right-left)*min(height[left],height[right]),maxa)
if height[left]<height[right]:
left+=1
else:
right-=1
return maxa
网友评论