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.
Note:
You may not slant the container.
Pasted
from <http://leetcode.com/onlinejudge>
//Solution1: brute force
int maxArea(vector &height) {
int maxVal = 0;
for (int i=0; i maxVal)
maxVal = area;
}
}
return maxVal;
}
//Solution2: two pointers
int maxArea(vector &height) {
int i = 0;
int j = height.size() - 1;
int maxAreas = min(height[j],height[i])*(j-i);
while (i < j)
{
if (height[i] >= height[j])
j--;
else
i++;
int area = (j-i) * min(height[i],height[j]);
if (area > maxAreas)
maxAreas = area;
}
return maxAreas;
}
No comments:
Post a Comment