首先给出一个超时的暴力破解法
class Solution {
public:
int maxArea(vector<int>& height) {
int sum=0;
int i=0;
int j=0;
for(i=0;i<height.size();i++)
{
for(j=0;j<height.size();j++)
{
if((j-i)*min(height[i],height[j])>sum)
{
sum=(j-i)*min(height[i],height[j]);
}
}
}
return sum;
}
};
下面给出双指针的解法:(这个解法易于理解)
class Solution {
public:
int maxArea(vector<int>& height) {
int l=0;
int r=height.size()-1;
int max=0;
while(l<=r)
{
if(max<(r-l)*min(height[l],height[r]))
{
max=(r-l)*min(height[l],height[r]);
}
if(height[l]>=height[r])
{
r--;
}
else
{
l++;
}
}
return max;
}
};
提交结果如下