您的位置:首页 > 大数据 > 人工智能

LintCode_383 Container With Most Water

2016-08-21 04:50 253 查看
Given n non-negative integers a1, a2,
..., an, where each represents a point at coordinate
(i,
ai)
. n vertical lines are drawn such that the two endpoints of line i is at 
(i,
ai)
 and
(i, 0)
. Find two lines, which together with x-axis
forms a container, such that the container contains the most water.


 Notice


You may not slant the container.

Have you met this question in a real interview? 

Yes

Example

Given 
[1,3,2]
, the max
area of the container is 
2
.
class Solution {
public:
/**
* @param heights: a vector of integers
* @return: an integer
*/
int maxArea(vector<int> &h) {
// write your code here
int res=0;
int n = h.size();
int l=0,r=n-1;
while(l<r)
{
res=max(res,min(h[l],h[r])*(r-l));
if (h[l]<h[r])
{
int k=l;
while(k<r&&h[k]<=h[l])
k++;
l=k;
}
else
{
int k=r;
while(k>l&&h[k]<=h[r])
k--;
r=k;
}
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: