双指针法
设置一个头指针start,一个尾指针end;刚开始时保持矩形的长度最长,之后开始从两边向中间夹;
在牺牲长度的前提下,尝试能否通过使较短的宽更长,来获得更大的面积。
代码如下:
class Solution {
public:
int maxArea(vector<int>& height) {
int start=0,end=height.size()-1,vol=0;
while(start<end){
int len=end-start;
int h=min(height[start],height[end]);
vol=max(vol,h*len);
if(height[start]<height[end])
start++;
else
end--;
}
return vol;
}
};