思路
标签:双指针,贪心
分析:
首先选两条线为容器的两端,盛水的高度取决于高度小的那条线,此时在两条线中间选一条线,有两种情况,如果区间内某条线比两端高度小的那条线还要小,此时宽度和高度都减小,面积必然减小,而如果区间内某条线比两端高度小的那条线要大,此时宽度减小,高度不变,面积仍减小
因此,要移动两端高度小的那条线,面积才可能增大,这就要用到双指针
class Solution {
public:
int maxArea(vector<int>& height) {
int n=height.size();
int ans=-1;
int l=0,r=n-1;
int area;
while(l<r)
{
area=(r-l)*min(height[r],height[l]);
ans=max(ans,area);
if(height[r]<height[l])r--;
else l++;
}
return ans;
}
};