音乐
音乐
暂未播放
0:00/0:00
暂无歌词
LeetCode | 盛最多水的容器
557 字
3 分钟
LeetCode | 盛最多水的容器
分类:双指针 / 数组
题目#
给定一个整数数组 height,数组中的每个数字表示一条竖线的高度。
任意选择两条竖线,它们和 x 轴可以组成一个容器。
求能够装下的最大水量。

示例:
1输入:height = [1,8,6,2,5,4,8,3,7]2输出:49讲解#
容器能装多少水,取决于:
1宽度 = 两条线之间的距离2高度 = 两条线中较短的那条3面积 = 宽度 * 高度暴力做法是枚举所有两条线的组合,计算每一对的面积。这样可以得到答案,但是有两层循环,时间复杂度是 O(n^2)。
这道题可以用双指针。先让 left 指向最左边,right 指向最右边。
当前面积是:
1(right - left) * min(height[left], height[right])接下来应该移动较短的那一边。
原因是:如果固定较短的那条线,只移动较高的那条线,宽度一定变小,而容器高度仍然不会超过原来的短板,所以面积不可能变大。
笔者的小巧思: 代码在这个基础上又做了一步剪枝:移动短板之后,如果新的高度还比刚才的短板更矮,就继续跳过。因为宽度已经变小,高度还更矮,这种位置也不可能得到更大的面积。
复杂度#
- 暴力做法:
- 时间复杂度:
O(n^2) - 空间复杂度:
O(1)
- 时间复杂度:
- 双指针做法:
- 时间复杂度:
O(n) - 空间复杂度:
O(1)
- 时间复杂度:
每个指针只会向中间移动,不会回头,所以总移动次数最多是 n 次。
代码#
源码#
1from typing import List2
3
4class Solution:5 def maxArea(self, height: List[int]) -> int:6 left = 07 right = len(height) - 18
9 ans = 010 while left < right:11 if height[right] < height[left]:12 h = height[right]13 area = (right - left) * h14 if area > ans:15 ans = area16 right -= 117 while left < right and height[right] < h:18 right -= 119 else:20 h = height[left]21 area = (right - left) * h22 if area > ans:23 ans = area24 left += 125 while left < right and height[left] < h:26 left += 127
28 return ans测试#
1from src.python._011_Container_With_Most_Water import Solution2
3
4sol = Solution()5
6assert sol.maxArea([1, 8, 6, 2, 5, 4, 8, 3, 7]) == 497assert sol.maxArea([1, 1]) == 18assert sol.maxArea([4, 3, 2, 1, 4]) == 169
10print("PASS")参考资料#
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
LeetCode | 盛最多水的容器
https://leetcode.cn/problems/container-with-most-water/最后更新于 2026-08-02
部分内容可能已过时
相关文章智能推荐
1
LeetCode | 接雨水
LeetCodeLeetCode 接雨水题解:理解每个位置的左右挡板,用双指针在线性时间内计算总积水量。
2
LeetCode | 三数之和
LeetCodeLeetCode 三数之和题解:先排序,再固定一个数并用双指针寻找不重复三元组。
3
LeetCode | 移动零
LeetCodeLeetCode 移动零题解:使用双指针原地移动零,同时保持非零元素相对顺序。
4
LeetCode | 寻找两个正序数组的中位数
LeetCodeLeetCode 寻找两个正序数组的中位数题解:用二分查找切分位置,在 O(log(min(m,n))) 时间内求中位数。
5
LeetCode | 双指针
LeetCode整理 LeetCode 双指针题目的核心思路:用两个指针描述位置或范围,并按规则移动,涵盖移动零、盛水容器、三数之和、接雨水、最长回文子串。
随机文章随机推荐
暂无随机文章
评论区
分享你的想法,与大家交流讨论
--
总访问量
--
访客数
公告
音乐
音乐
暂未播放
0:00/0:00
暂无歌词
站点统计
文章
66
分类
16
标签
93
总字数
477,284
运行时长
0 天
最后活动
0 天前
最新动态



