public class Solution {
public int maxArea(int[] height) {
int maxarea = 0, l = 0, r = height.length - 1;
while (l < r) {
maxarea = Math.max(maxarea, Math.min(height[l], height[r]) * (r - l));
if (height[l] < height[r])
l++;
else
r--;
}
return maxarea;
}
}
官方双指针法如上,观毕。写一点自己理解。
双指针法是从,从最大宽度开始,不断缩减,以宽度的减少试图获取短板的提高从而试探出更大的总面积,直到所有的垂直直线均被检测过一次为止,也就是宽度已经不能再减少了。此时存储在缓存最大面积里的值便是最大面积。