分析:
可以理解为从容器的左右寻找一组数据,使得到的面积最大,因此可以使用双指针的做法,分别从左右两侧寻找最矮的边,并计算两个边之间的距离,然后根据这个距离计算水平方向上的面积区域;
之后开始移动指针的位置,如果当前的位置是高的,那么保持不动,移动比较矮的那个,直到两个指针的位置重叠。
class Solution {
public:
int maxArea(vector<int>& height) {
int i=0, j=height.size()-1, area=-1;
while(i<j)
{
int h = min(height[i], height[j]);
area = max(area, h*(j-i));
if(height[i] < height[j])
{
i++;
}else
j--;
}
return area;
}
};