11. 盛最多水的容器
原始题目链接:https://leetcode-cn.com/problems/container-with-most-water/
解题思路:
这道题需要清楚面积的计算公式,设定两个指针分别指向数组中的两端,则面积的计算公式为:两个指针指向的数组数字中的最小值 *
两个指针之间的距离。每次计算一个面积后,再移动指针指向下一个数组中的位置,这里每次移动上次计算公式中指针指向较小的那个指针,因为每次移动指针,两个指针的距离会变小,移动大的指针,根据计算公式每次是取两个值指向的最小值,所以移动小的指针只会小于等于上次的结果。具体实现看代码。
代码实现:
class Solution:
def maxArea(self, height: List[int]) -> int:
l, r = 0, len(height) - 1
ans = 0
while l < r:
area = min(height[l], height[r]) * (r - l)
ans = max(ans, area)
if height[l] <= height[r]:
l += 1
else:
r -= 1
return ans
参考文献:
https://leetcode-cn.com/problems/container-with-most-water/solution/sheng-zui-duo-shui-de-rong-qi-by-leetcode-solution/