音乐
音乐
暂未播放
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 双指针题目的核心思路:用两个指针描述位置或范围,并按规则移动,涵盖移动零、盛水容器、三数之和、接雨水、最长回文子串。
随机文章随机推荐
暂无随机文章
评论区
分享你的想法,与大家交流讨论
站点统计
文章
118
分类
20
标签
164
总字数
1,050,769
运行时长
0 天
最后活动
0 天前
最新动态
2026.09.04
过往皆是序章,前路漫有星光
2026.09.02
九月风至,赴约燕园
2026.07.06
岁次壬寅,序属季夏。负箧吴江,栖迟久泳。时维高考新败,登阊门而北望,临胥江以长嗟。昔者子安命蹇,尚能奋藻于滕阁;今吾才疏,岂可沉沦于吴市?乃焚膏以继晷,立雪而追贤。自暑月即研电学之微,探数理之奥。但求踔厉侪辈,砥砺锋芒。 洎乎素商既至,庠序始开。选修五门皆得满绩,总评冠绝同侪。然尘世难料,人心叵测。交非其人,悔吝丛生。一载相交,竟转瞬成参商。当是时也,恍若屈子见放,贾生受谗。然仲尼厄而作春秋,左丘眇而厥有国语。经此砥砺,竟愈宿疾:昔之曲意逢迎,今则坦荡自持;向之汲汲人言,今则泰然自若。所谓塞翁失马,焉知非福耶? 若夫玄冥司节,青阳启序。既专课业,复骋赛场。数模电赛,殚精竭虑;车赛集创,呕心镂骨。常观吴江夜月,每伴姑苏晨星。悬梁刺股,非为功名之累;凿壁囊萤,实怀鸿鹄之志。终使课业蝉联榜首,竞赛累获殊荣。然形神俱瘁,犹记寒宵病骨,强支案牍;伏暑昏眩,犹自深研不辍。 岁次甲辰,时逢白藏。绩点累年称冠,奖项盈箧成行。遂膺国奖之荣,如登龙门之津。乃遍谒名师,广求良策。拟鹏徙南冥,期凤鸣岐阳。幸得燕园李萌先生青眼,许列门墙。继入艾捷科芯实习,兼修毕业设计。两事交并,心力俱疲。承钟林峰师兄鼎力,终克难关。 今当辞别葑溪,将赴燕台。忆昔韩洪润学长,指迷津于暗夜;念吴圣洁挚友,伴苦读于寒窗。实乃天眷优渥,得遇诸君。昔者范公划粥,终成社稷之臣;欧母画荻,乃育文章之伯。予虽驽钝,敢不踵武前修?悟已往之不谏,知来者之可追。陶元亮归去来辞,实获我心;王子安穷且益坚,宁移素志?今将整装而北发,岂效楚囚之泣?当乘长风,破巨浪,展鸿图于未央!
日
一
二
三
四
五
六
文章目录
--
总访问量
--
访客数
公告
音乐
音乐
暂未播放
0:00/0:00
暂无歌词
站点统计
文章
118
分类
20
标签
164
总字数
1,050,769
运行时长
0 天
最后活动
0 天前
最新动态
2026.09.04
过往皆是序章,前路漫有星光
2026.09.02
九月风至,赴约燕园
2026.07.06
岁次壬寅,序属季夏。负箧吴江,栖迟久泳。时维高考新败,登阊门而北望,临胥江以长嗟。昔者子安命蹇,尚能奋藻于滕阁;今吾才疏,岂可沉沦于吴市?乃焚膏以继晷,立雪而追贤。自暑月即研电学之微,探数理之奥。但求踔厉侪辈,砥砺锋芒。 洎乎素商既至,庠序始开。选修五门皆得满绩,总评冠绝同侪。然尘世难料,人心叵测。交非其人,悔吝丛生。一载相交,竟转瞬成参商。当是时也,恍若屈子见放,贾生受谗。然仲尼厄而作春秋,左丘眇而厥有国语。经此砥砺,竟愈宿疾:昔之曲意逢迎,今则坦荡自持;向之汲汲人言,今则泰然自若。所谓塞翁失马,焉知非福耶? 若夫玄冥司节,青阳启序。既专课业,复骋赛场。数模电赛,殚精竭虑;车赛集创,呕心镂骨。常观吴江夜月,每伴姑苏晨星。悬梁刺股,非为功名之累;凿壁囊萤,实怀鸿鹄之志。终使课业蝉联榜首,竞赛累获殊荣。然形神俱瘁,犹记寒宵病骨,强支案牍;伏暑昏眩,犹自深研不辍。 岁次甲辰,时逢白藏。绩点累年称冠,奖项盈箧成行。遂膺国奖之荣,如登龙门之津。乃遍谒名师,广求良策。拟鹏徙南冥,期凤鸣岐阳。幸得燕园李萌先生青眼,许列门墙。继入艾捷科芯实习,兼修毕业设计。两事交并,心力俱疲。承钟林峰师兄鼎力,终克难关。 今当辞别葑溪,将赴燕台。忆昔韩洪润学长,指迷津于暗夜;念吴圣洁挚友,伴苦读于寒窗。实乃天眷优渥,得遇诸君。昔者范公划粥,终成社稷之臣;欧母画荻,乃育文章之伯。予虽驽钝,敢不踵武前修?悟已往之不谏,知来者之可追。陶元亮归去来辞,实获我心;王子安穷且益坚,宁移素志?今将整装而北发,岂效楚囚之泣?当乘长风,破巨浪,展鸿图于未央!



