题目描述
方法1-暴力循环
利用双重for循环,分别遍历各个高度,枚举所有可能的面积,找到最大值
class Solution:
def maxArea(self, height: List[int]) -> int:
length = len(height)
square = 0
for i in range(length):
for j in range(i+1,length):
square = max(square,min(height[i],height[j])*(j-i))
return square
方法2-双指针
利用双指针,分别从两边的高度往中间寻找,相同情况下,两条边越远面积越大。固定较高的边,将较低的边继续向中间寻找高边,记录最大面积。
class Solution:
def maxArea(self, height: List[int]) -> int:
length = len(height)
left, right = 0, length -1
square = 0
while left != right:
square = max(square, min(height[left],height[right]) * (right - left))#记录当前最大面积
if height[right] > height[left]:
left+=1
else:
right-=1
return square