首先我先采用的是暴力解法,就是纯纯进行遍历套遍历
前面的还可以,但是后面的就开始超出时间限制了,代码如下:
class Solution
{
public:
int maxArea(vector<int>& height)
{
int n=height.size(); //计算n的长度
int left,right,min_h,left_h,right_h,temp; //初始化
int maxArea=0; //初始化maxArea长度
for(left=0;left<n-1;left++) //采用暴力解法进行求解
{
for(right=n-1;right>left;right--)
{
left_h=height[left];
right_h=height[right];
if (left_h<=right_h) min_h=left_h; //找出最矮的长度
else min_h=right_h;
temp=min_h*(right-left); //计算当前的容积
if(maxArea<temp) maxArea=temp;
}
}
return(maxArea);
}
};
然后参考了一下题解!最后发现原来思路只需要稍微update一下,便可以解决更多耗时的问题!
class Solution
{
public:
int maxArea(vector<int>& height)
{
int n=height.size(); //计算n的长度
int left=0,right=n-1,maxArea=0; //初始化
int left_h,right_h,temp,min_h; //初始化
while(left<right)
{
//初始化一下
left_h=height[left];
right_h=height[right];
//计算当前容量并更新最优解
if(left_h<=right_h) min_h=left_h;
else min_h=right_h;
temp=min_h*(right-left);
if(maxArea<temp) maxArea=temp;
//移动指针,寻找更优的height
if(left_h<=right_h) left++;
else right--;
}
return(maxArea); //返回答案
}
};
【部分材料来源于力扣,侵权删】