

public int maxArea(int[] height) {
//采用双指针,从最两边开始
int l = 0;
int r = height.length-1;
int max = 0;
while (l<r) {
//记录当前的一个容量然后用max记录当前最大值
int area = Math.min(height[l],height[r])*(r-l);
max = Math.max(max,area);
//这个移动指针的问题,就是看两个边界哪个短移动哪个
//因为这个短的一边是影响容量增大的因素,就算你右边界左移长度变大,
// 但由于短边界的限制,你的容量依旧只会变小,所以哪边短移动哪边
if (height[l]<height[r]) {
l++;
}else {
r--;
}
}
return max;
}
本文介绍了一种使用双指针法解决盛水问题的方法。通过从两端向中间逼近,找到能容纳最多水的容器组合。文章详细解释了算法的逻辑,并提供了完整的Java代码实现。
739

被折叠的 条评论
为什么被折叠?



