添加链接描述
我的题解:
class Solution:def maxArea(self, height: List[int]) -> int:# 两层for循环,保存最大值temp=0res=0for i in range(len(height)-1):for j in range(i+1,len(height)):temp=min(height[i],height[j])*(j-i)# print(temp)res=max(temp,res)return res
能出结果,但是超时了
class Solution:def maxArea(self, height: List[int]) -> int:left=0right=len(height)-1temp=0result=0while left<right:temp=min(height[left],height[right])*(right-left)result=max(result,temp)if height[left]<=height[right]:left+=1else:right-=1return result
这个题解的思路是:
因为ans=最小值(左边,右边)*距离(右边-左边)
无论如何这个距离都要减1,所以最小值这里就要取大值
那么如果左边>右边,右边就向左边移,这样才能让最小值增大
题解详细描述