盛最多水的容器

盛最多水的容器,第1张

盛最多水的容器

首先容器的计算面积两个坐标纵坐标的最小值 * 横坐标的差

即res = Math.max(res,Math.min(height[p1],height[p2]) * (p2-p1));

接下来就是两个指针如何移动。 p2-p1一开始就是最大的,在移动肯定是变小。而且都是变小1。所以应该让纵坐标小的指针移动。

class Solution {
    public int maxArea(int[] height) {
        int res = 0;
        int p1 = 0;
        int p2 = height.length - 1;
        while(p1 < p2){
            res = Math.max(res,Math.min(height[p1],height[p2]) * (p2-p1));
            if(height[p2] > height[p1]) p1++;
            else p2--;
        }
        return res;
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4000707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存