我最开始写的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;
}
本文介绍了一种优化算法,通过双指针法改进了求解最大矩形面积的问题,从时间复杂度 O(n^2) 优化到 O(n),详细解释了算法原理和实现步骤。
404

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



