左右指针夹逼,以最小高度为高,宽度(end-start)算出矩形面积,并和最大值比较,算出最大值。
哪边高度矮就向中心方向走一步
#define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b)
int maxArea(int* height, int heightSize) {
int l = 0;
int r = heightSize-1;
int maximum = INT_MIN;
while(l<r){
int tmp = min(height[l],height[r])*(r-l);
maximum = max(maximum, tmp);
if(height[l] < height[r])
l++;
else
r--;
}
return maximum;
}
网友评论