代码
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、通过“双指针”解决盛水问题非常典型。指针从两侧开始向中间移动,每次比较盛水量,最终得到输出结果。
问题的关键在于移动哪一侧,由于盛水量为“两个指针指向的数字中较小值∗指针之间的距离”,所以我们每次移动指针对应高度较小的一侧。
重视学习该类题目的双指针思路。
本文总结了LeetCode题目11中,如何使用双指针技巧求解盛最多水的容器问题。通过移动高度较小的指针,不断更新最大面积。关键在于理解双指针的移动策略及其在问题中的应用。
1720

被折叠的 条评论
为什么被折叠?



