题意:有n个位置,给出每个位置的高度,选择两个位置和x轴形成贮水池,问贮水池最大面积是多少。
题解:用两个指针往中间移动,每移动一次就算一次面积,直到两个指针相遇,指针如何移动?哪边的高度小,哪边的指针就往中间移动一次。
class Solution {
public:
int maxArea(vector<int>& height) {
int l = 0,r = height.size() - 1;
int maxarea = 0;
while(l < r)
{
int h = min(height[l],height[r]);
maxarea = max(maxarea,(r - l) * h);
if(height[l] < height[r]) l++;
else r--;
}
return maxarea;
}
};