LeetCode #11 Container With Most Water
题目
解题方法
题目希望求得最大面积,即左右两个板子中较小的那个的高度乘以两个板子之间的跨度,而众所周知的是最大跨度为数组的长度,因此为了达到最大面积,可以考虑从左右两端开始向中间找。
设置左右两个指针分别为i,j,每次移动时仅移动数值较小的那个,并检查最大面积是否需要更新,当i和j重合时循环结束,最大面积也就找到了。
代码
# Python
class Solution:
def maxArea(self, height: List[int]) -> int:
i, j, maxarea = 0, len(height) - 1, 0
while i < j:
maxarea = max(maxarea, min(height[i], height[j]) * (j - i))
if height[i] < height[j]:
i += 1
else:
j -= 1
return maxarea

浙公网安备 33010602011771号