class Solution {
public int maxArea(int[] height) {
//表示从第0堵墙和最后一堵开始计算
int i=0,j=height.length-1;
int maxArea=getArea(height,i,j);
while(i<j){
//如果i的高度小,就往后看有比arr[i]大的再计算
if(i<j&&height[i]<=height[j]){
while(i+1<j&&height[i]>=height[i+1])
i++;
int area=getArea(height,++i,j);
if(area>maxArea)
maxArea=area;
}
//如果j的高度小,j就往前移,找比他大的高度
if(i<j&&height[i]>height[j]){
while(i<j-1&&height[j]>height[j-1])
j--;
int area=getArea(height,i,--j);
if(area>maxArea)
maxArea=area;
}
}
return maxArea;
}
public int getArea(int[] arr,int i,int j){
if(arr[i]<arr[j])
return arr[i]*(j-i);
else
return arr[j]*(j-i);
}
}
网友评论