11. 盛最多水的容器
给定一个数组,要求所有两两垂线之间可以容纳最多水的容器的容积,容器的容积=底*高,
例如,图中的容积就是蓝色区域,注意到蓝色区域的面积取决于两侧的垂线,以第二条红线为例,如果中间的线比他矮,那么水的宽度减少,高度减少,面积小于当前面积,如果中间的线比他高,那么宽度减少,高度增高,面积不等于当前面积,所以想要获得更大的面积,是需要移动两侧的垂线的,根据短板原理,水的面积,取决于短板,所以我们需要移动短板。在移动的同时,记录最大的面积即可
class Solution {
public:int maxArea(vector<int>& height) {int l = 0,r = height.size() - 1,ans = 0;while(l <= r) {int temp = (r - l) * min(height[r],height[l]);ans = max(ans,temp);if (height[l] < height[r]) l++;else r--;}return ans;}
};