题目
Given n non-negativeintegers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical linesare drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Findtwo lines, which together with x-axis forms a container, such that thecontainer contains the most water.
Note: You may not slant thecontainer.
实际上要求返回的只是容器的最大容量,也就是最大的(j-i)*min(height[j],height[i]);
i,j从头尾两端向中间扫:
计算当前容量,比较刷新暂存的最大容量;
如果height[i]<height[j],i++;否则j--;直到i>j
代码:
class Solution {
public:
int maxArea(vector<int> &height) {
int contain=0,ctp;
int i=0,j=height.size()-1;
while(i<j)
{
ctp=(j-i)*min(height[i],height[j]);
if(ctp>contain)
contain=ctp;
if(height[i]<height[j])
i++;
else
j--;
}
return contain;
}
};