Problem:
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.
Analysis:
Solution:
C++:
int maxArea(vector<int>& height) {
if(height.empty())
return 0;
unsigned int max_amount = 0;
int start = 0;
int end = height.size() - 1;
while(start < end) {
if(max_amount == 0 || max_amount < min(height[start], height[end]) * (end - start))
max_amount = min(height[start], height[end]) * (end - start);
min(height[start], height[end]) == height[start] ? ++start : --end;
}
return max_amount;
}
Java
:
Python: