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.
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;
}
};