这个题其实就是左右指针跑,然后计算面积,更新面积。左指针定义在0的位置,右指针定义在height.length-1的位置,然后算出面积,更新面积,如果左指针指向的高比右指针小,左指针加加,如果右指针指向的高比左指针指向的高小,右指针减减,再计算面积,然后更新面积。
class Solution {
//一般有两个边界的时候,优先考虑双指针
public int maxArea(int[] height) {
int i=0;
int j=height.length-1;
int amax=0;
while(i<j) {
int area=Math.min(height[i],height[j])*(j-i);
if(amax<area)
amax=area;
if(height[i]<height[j]) i++;//如果左边的边小就移动左指针
else j--;//否则移动右指针
}
return amax;
}
}