11. 盛最多水的容器(高频题)


11. 盛最多水的容器

解题思路

这种能装多少水的问题一般都是用双指针!本题要注意和42.接雨水分开,两种求的并不是同一个东西,所以细节有些不同。但是大体上都是用的双指针。

本题的解题核心思想:面积取决于短板。
①因此即使长板往内移动时遇到更长的板,矩形的面积也不会改变;遇到更短的板时,面积会变小。
②因此想要面积变大,只能让短板往内移动,当然也有可能让面积变得更小,但只有这样才存在让面积变大的可能性

代码

class Solution {
    public int maxArea(int[] height) {
        int i = 0, j = height.length - 1, res = 0;
        while (i < j) {
            if (height[i] < height[j]) {
                //j - i:下标的差,为长方形的长   height[i] 长方形的高
                res = Math.max(res, (j - i) * height[i]);
                i++;
            } else {
                res = Math.max(res, (j - i) * height[j]);
                j--;
            }
        }
        return res;
    }
}

文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录