类型:数组
-
- 盛最多水的容器 💛
https://leetcode-cn.com/problems/container-with-most-water/
❓ 给你一个 height 数组,代表木板高度,相邻木板间隔为 1 个单位。问最大的容水量。

💡 双指针
开始时,左右指针分别指向数组的左右两端。
此时我们需要移动一个指针,移动哪一个呢?我们应该移动对应数字较小的那个指针。
容水量 = 两个指针指向数字中的较小值 * 指针距离
如果我们移动较大的那个指针,那么「两个指针指向数字中的较小值」不会增加,「指针之间的距离」会减小,容水量必然减小。
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时间复杂度:O(n),双指针总计最多遍历数组一次
空间复杂度:O(1)