思路
标签:双指针,贪心
分析:
首先选两条线为容器的两端,盛水的高度取决于高度小的那条线,此时在两条线中间选一条线,有两种情况,如果区间内某条线比两端高度小的那条线还要小,此时宽度和高度都减小,面积必然减小,而如果区间内某条线比两端高度小的那条线要大,此时宽度减小,高度不变,面积仍减小
因此,要移动两端高度小的那条线,面积才可能增大,这就要用到双指针
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;}
};