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