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 and n is at least 2.
解:从两头开始遍历
代码:
class Solution {
public:
int maxArea(vector<int>& height) {
int area = 0;
int i = 0;
int j = height.size() - 1;
int h = 0, w = 0;
while(i < j){
h = min(height[i], height[j]);
w = j - i;
area = max(area, w * h);
while(i < j && height[i] <= h) i++;
while(i < j && height[j] <= h) j--;
}
return area;
}
};