双指针,能够盛水的面积为左右指针中较小的高度 * (r - l) 宽度,移动时,移动较小的指针;因为较小指针移动时,有可能使面积更大;由于面积的结果由 (r - l) * min(l, r) 决定, 不管移动 l 还是 r, r - l 都会变小, 若移动min(l, r) 中较大的,有可能得到更小的 min值.
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param height int整型一维数组
# @return int整型
#
class Solution:
def maxArea(self , height: List[int]) -> int:
# write code here
res = 0
l, r = 0, len(height) - 1
while l < r:
res = max(res, (r - l) * min(height[l], height[r]))
if height[l] < height[r]:
l += 1
else:
r -= 1
return res