☰
算法之旅-Hot100—盛最多水的容器
2026/10/18 2:52:32 网站建设 项目流程

题目:盛最多水的容器

描述:给定一个长度为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。

算法思路:

由于需要计算面积,肯定是需要同时获取两侧的数值,直接定义左右指针,然后计算面积,后向中间移动指针,由于面积是两侧更低的高度一边乘上长度所得,所以更大面积肯定是需要移动低一侧的指针向内找更高的数值!

class MaxArea{ public int maxArea(int[] height){ int left = 0; int right = height.length - 1; int ans = 0; while(left < right){ int area = (right - left) * Math.min(height[left], height[right]); ans = Math.max(area,ans); if (height[left] < height[right]){ left++; }else{ right--; } } return ans; } }

注:只为记录自己的练习过程,方便回顾!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询