代码
class Solution(object):
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
p1, p2 = 0, len(height) - 1
maxS = 0
while p1 < p2:
maxS = max(maxS, (p2 - p1) * min(height[p1], height[p2]))
if height[p1] > height[p2]:
p2 -= 1
else:
p1 += 1
return maxS
总结
1、通过“双指针”解决盛水问题非常典型。指针从两侧开始向中间移动,每次比较盛水量,最终得到输出结果。
问题的关键在于移动哪一侧,由于盛水量为“两个指针指向的数字中较小值∗指针之间的距离”,所以我们每次移动指针对应高度较小的一侧。
重视学习该类题目的双指针思路。