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.
有时一个双指针问题。
class Solution {
public:
int maxArea(vector<int> &height) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int nSize = height.size();
int i = 0;
int j = nSize - 1;
int mArea = 0;
int tmp = 0;
while(i < j)
{
tmp = (j - i) * (height[i] < height[j] ? height[i] : height[j]);
mArea = tmp > mArea ? tmp : mArea;
if (height[i] < height[j])
while(height[i] > height[++i]);
else
while (height[j] > height[--j]);
}
return mArea;
}
};