【双指针_盛最多水的容器_C++】

题目解析
盛最多水的容器
【双指针_盛最多水的容器_C++】_第1张图片
算法原理
【双指针_盛最多水的容器_C++】_第2张图片
【双指针_盛最多水的容器_C++】_第3张图片
向内枚举:

weight一定会减小
height不是不变就是减小

【双指针_盛最多水的容器_C++】_第4张图片
要求的是盛水最多的容器,那么这些枚举情况就不需要。
【双指针_盛最多水的容器_C++】_第5张图片
拿比较小的数去向内枚举,v一直在减小,所以说直接排除
【双指针_盛最多水的容器_C++】_第6张图片
【双指针_盛最多水的容器_C++】_第7张图片

编写代码

class Solution {
public:
    int maxArea(vector<int>& height) {
        int left = 0;
        int right = height.size()-1;
        int sum = 0;

        while(left<right){
            int v = min(height[left],height[right])*(right-left);
            sum = max(v,sum);
            if(height[left]<height[right])
                left++;
            else
                right--;
        }
        return sum;
    }
};

你可能感兴趣的:(双指针算法,c++,开发语言)