这就到双指针了
class Solution:
def maxArea(self, height: List[int]) -> int:
num=len(height)
mx=0
for i in range(num-1):
for j in range(num-1,i,-1):
mx=max(mx,min(height[i],height[j])*(j-i))
return mx
包超时的啊
所以得查找i和j之间的联系
核心思想:
双指针围起来的面积,移动长板,面积一定变小(因为下一个min(height[i],height[j]就是新长板(小于目前长板)或者原短板)
移动短板,面积不一定会变小
class Solution:
def maxArea(self, height: List[int]) -> int:
num=len(height)
mx=0
i=0
j=num-1
while i<j:
mx=max(mx,min(height[i],height[j])*(j-i))
if height[i]<height[j]:
i+=1
else:
j-=1
return mx