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.
典型的雙指針應用問題,令low = 0, high = len - 1,然後向中間靠攏,向中間靠攏意味着寬在減少,那爲了使面積更加得大,唯一的可能是找到更高的高度。
class Solution {
public:
//雙指針
int maxArea(vector<int>& height) {
int len = height.size();
if(len < 2)
return 0;
int low = 0, high = len - 1;
int max = -1;
while(low < high)
{
int tmpArea = (high - low) * min(height[low], height[high]);
max = (max < tmpArea) ? tmpArea : max;
if(height[low] <= height[high])
++low;
else
--high;
}
return max;
}
};