题目想到用双指针去解决,分别定义在左右边界。
停止条件:while(right==left)
面积的计算公式是(left-right)*min(height[left],height[right])
无论是right移动还是left移动都会导致宽度变小,在这个情况下我需要让我的min变大,才有可能让面积得到更新。即需要去更新高度小的边。
code:
class Solution {
public:
int maxArea(vector<int>& height) {
int maxarea=0;
int left=0;
int right=height.size()-1;
while(left!=right)
{
int tmp=min(height[left],height[right])*(right-left);
maxarea=max(maxarea,tmp);
if(height[left]>height[right])
right--;
else
left++;
}
return maxarea;
}
};