做此题的关键在于要想到双指针这个点,否则就只想得到暴力解法了。其次还要设计双指针应该怎么移动问题,证明移动方法确实能够得出答案。
链接: 题解官方思路解答.
#define MAX(a,b) a>=b ? a:b
#define MIN(a,b) a<=b ? a:b
int maxArea(int* height, int heightSize){
int max=0;
int l = 0,r = heightSize-1;
while(l<r)
{
int area = (MIN(height[l],height[r])) * (r-l);
max = MAX(area,max);
if(height[l] >= height[r])
r--;
else
l++;
}
return max;
}