描述
给定 n 个非负整数 a1, a2, …, an, 每个数代表了坐标中的一个点 (i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。
注意事项
容器不可倾斜。
样例
给出[1,3,2], 最大的储水面积是2.
思考
- 头尾指针遍历,保存最大值
代码
// By Lentitude
class Solution {
public:
/**
* @param heights: a vector of integers
* @return: an integer
*/
int maxArea(vector<int> &heights) {
// write your code here
if (heights.size() < 2) return NULL;
int ret = 0;
int r = heights.size()-1;
int l = 0;
while (l < r)
{
ret = max(ret,min(heights[l],heights[r])*(r-l));
if(heights[l]<heights[r])
l++;
else
r--;
}
return ret;
}
};