解析:
把数组下标作为横坐标点,该点上的高度即为数组该位置的数值。要求根据两点和其高度围成的容器的最大容水量(容水量肯定根据短的那条边来计算)
思路:
从左右两边向中间靠拢,每一步计算当前的矩形面积(以两点间距为长,以较矮数值为高),保留最大矩形面积即为最大容水量。
算法:
class Solution {
public int maxArea(int[] height) {
int maxArea = 0;
int left =0; //左边的边
int right = height.length-1;//右边的边
while(left<right){
int S = (Math.min(height[left],height[right]))*(right-left);//求出矩形的面积(长为两点间距,高为最短边的长度。)
maxArea = maxArea>=S?maxArea:S;//最大面积
if(height[left]<height[right]){
left++;
}else{
right--;
}
}
return maxArea;
}
}
网友评论