
題目
解析:
把數組下標作為橫坐標點,該點上的高度即為數組該位置的數值。要求根據兩點和其高度圍成的容器的最大容水量(容水量肯定根據短的那條邊來計算)
思路:
從左右兩邊向中間靠攏,每一步計算當前的矩形面積(以兩點間距為長,以較矮數值為高),保留最大矩形面積即為最大容水量。
算法:
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;
}
}