双指针,能够盛水的面积为左右指针中较小的高度 * (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