盛最多水的容器
1
起初的暴力算法,毫无疑问 超时了,换一个
def maxArea(height: list[int]) -> int:
Max = 0
for left in range(len(height)):
for index,element in enumerate(height[left + 1:]):
Max = max(Max,(index + 1) * min(height[left],element))
return Max
2
跟着官方学到的一个双指针法
宽 right - left
高 height[right] - height[left]
相乘判断最大值
之后继续往中间进行遍历并比较
(哪边更矮哪边移动)
def maxArea(height: list[int]) -> int: # 最宽和最长
Max = 0
left = 0
right = len(height) - 1
while left < right:
Max = max(Max,(right - left) * min(height[right],height[left]))
if height[left] < height[right]:
left += 1
else:
right -= 1
return Max
唉,给我一种每天在补作业的感觉
之后一定一日一题