腾讯18年秋的面试题,输入一个数组,例如{1,8,6,2,5,4,8,3,7};
1546069538.png
求其中最大的“水桶容积”,由图可知是49,白色的8和7之间能“容纳的值为”49。
算法:max(min(a[i],a[j]) * (j-i))
代码:
int maxArea(vector<int>& height) {
int area = 0;
for (int i = 0; i < height.size(); i++)
{
for (int j = 0; j < height.size(); j++)
{
int h = min(height[i], height[j]);
area = area < abs(i - j) * h ? abs(i - j) * h : area;
}
}
return area;
}
网友评论