【LeetCode每日一题】盛最多水的容器

avatar
作者
猴君
阅读量: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;     } };

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!