leetcode-盛最多水的容器

盛水最多的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

输入:[1,8,6,2,5,4,8,3,7]
输出:49
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容> 器能够容纳水(表示为蓝色部分)的最大值为 49。
示例 2:

输入:height = [1,1]
输出:1

提示:

n == height.length
2 <= n <= 105
0 <= height[i] <= 104

因为容器的面积由两端中较短的高度决定,如果移动较长的一侧,宽度会变小,而短板不会改变,因此面积一定会减小。只有移动较短的一侧,才有可能找到更高的高度,从而突破当前短板限制,使面积可能增大。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def max_area(nums: list[int]) -> int:
left, right = 0, len(nums) - 1
max_area = 0

while left < right:
height = min(nums[left], nums[right])
width = right - left
area = height * width
max_area = max(max_area, area)

if nums[left] < nums[right]:
left += 1
else:
right -= 1

return max_area

leetcode-盛最多水的容器
https://vegetablest.github.io/2026/02/27/leetcode-盛最多水的容器/
作者
af su
发布于
2026年2月27日
许可协议