思路:
利用双指针法进行移动,一个在头一个在尾,此时宽度最宽,当宽度缩小时,高度发生变化,从而可以找到最大值。
代码:
cpp
int maxArea(int* height, int heightSize)
{
int* left = height;
int* right = (height + heightSize - 1);
int area = 0;
int maxArea = -1;
while (left < right)
{
int min = *left > *right ? *right : *left;//找高度最小值
area = min * (right - left);
if (area > maxArea)
{
maxArea = area;//找面积最大值
}
if (*left > *right)
{
right--;
}
else
{
left++;
}
}
return maxArea;
}