题意描述: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.
思路:从两端出发,只有大于两端的值时才有可能获得更大的容量。
AC代码:
class Solution{
public:
int maxArea(vector<int>& height){
if(height.size() == 0) return 0;
int area = 0, max_area = 0;
for(int left = 0, right = height.size() -1; left < right; ){
//cout << "left:" << left << " right:" << right << endl;
int min_height = height[left] < height[right] ? height[left] : height[right];
area = min_height * (right - left);
max_area = area > max_area ? area : max_area;
if(height[left] == min_height ){
left ++;
} else if(height[right] == min_height){
right --;
} else{
left ++;
right --;
}
}
return max_area;
}
};