我最开始写的O(n^2) 的无法通过,从头遍历到结尾
int maxArea(vector<int>& height)
{
int size = height.size();
int max = 0;
for (int i = 0; i != size; ++i)
for (int j = i + 1; j != size; ++j)
{
int volume = (height[i] < height[j] ? height[i] : height[j]) * (j - i);
max = max < volume ? volume : max;
}
return max;
}
其实可以从头尾处同时开始,
int maxArea1(vector<int>& height)
{
int size = height.size();
int max_volume = 0;
for (int i = 0, j = size - 1; i < j;)
{
if (height[i] <= height[j])
{
max_volume = max(max_volume,height[i] * (j - i));
++i;
}
else
{
max_volume = max(max_volume, height[j] * (j - i));
--j;
}
}
return max_volume;
}