11. 盛最多水的容器

狂风中的少年 提交于 2019-12-27 18:01:25

一个典型的双指针题,定义左右指针表示盛水容器的高度,即height数组中较小的值,盛水量可表示为高度与两个指针之差的乘积,因此要求该乘积的最大值。指针初始值指向数组开头和结尾,为了获取最大的盛水量,应该使高度较小的指针向中间靠拢,循环结束条件为两个指针相等。

class Solution {
    public int maxArea(int[] height) {
        int left = 0;
        int right = height.length-1;
        int max=0;
        while(left < right){
            int len = right-left;
            max = Math.max(max, len*(Math.min(height[right], height[left])));
            if(height[left] > height[right]){
                right--;
            }else{
                left++;
            }
        }
        return max;
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!