首先想到的方法是两层循环,分别计算取最大值,时间复杂度O(n^2)
大数据提示超时
超时的代码
class Solution {
public:
int maxArea(vector<int> &height) {
int size = height.size();
int maxWater = 0;
for(int i = 0; i < size; ++i)
{
if(height[i]==0)
continue;
for(int j = i+1; j < size; ++j)
{
int temp = (j-i)*min(height[i], height[j]);
if(temp>maxWater)
maxWater = temp;
}
}
return maxWater;
}
};
参考http://www.cnblogs.com/TenosDoIt/p/3812880.html
Accepted
lass Solution {
public:
int maxArea(vector<int> &height) {
int left = 0;
int right = height.size()-1;
int maxWater = 0;
while(left<right)
{
maxWater = max(maxWater, (right-left)*min(height[left], height[right]));
if(height[left]<height[right])
left++;
else
right--;
}
return maxWater;
}
};
2602

被折叠的 条评论
为什么被折叠?



