https://leetcode.cn/problems/container-with-most-water/?envType=study-plan-v2&envId=top-100-liked
双指针,一个指向开始,一个指向末尾,刚开始长是最大的,我们想让整个容器的面积最大,就是长*宽最大,无论左指针移动还是右指针移动,我们的长都要缩小,我们尽可能想使面积变大,就要使宽尽可能大,所以指针指向的那个较短的height就要移动,我们选择保留较长的这样使其更长的可能性变大。
循环条件为左指针小于右指针时
class Solution {
public:
int maxArea(vector<int>& height) {
int left=0;
int right=height.size()-1;
int res=0;
while(left<right){
int a=height[left];
int b=height[right];
res=max(res,(right-left)*min(a,b));
if(a>b)right--;
else left++;
}
return res;
}
};