leetcode 11. 盛最多水的容器
盛最多水的容器
给你 n
个非负整数 a1,a2,...,an
,每个数代表坐标中的一个点 (i, ai)
。在坐标内画 n
条垂直线,垂直线 i
的两个端点分别为 (i, ai)
和 (i, 0)
。找出其中的两条线,使得它们与 x
轴共同构成的容器可以容纳最多的水。
说明:你不能倾斜容器。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
示例 4:
1 |
|
提示:
- n = height.length
- 2 <= n <= 3 * 104
- 0 <= height[i] <= 3 * 104
算法1
解题思路:
使用双指针进行解题,本题的核心点在于,容纳的水量为
两个指针指向的数字中较小值 ∗ 指针之间的距离
所以,使用双指针标记区间范围,缓存面积的值,每次计算都求出当前区间范围的面积,并求出缓存的面积值和当前的面积值的最大值,更新缓存。之后再从最小值开始移动指针,求下一次的面积。
1 |
|
leetcode 11. 盛最多水的容器
https://blog.justforlxz.com/2021/07/06/container-with-most-water/