其他分享
首页 > 其他分享> > 力扣 11题 盛最多水的容器

力扣 11题 盛最多水的容器

作者:互联网

Question 11-container with most water

解题思路

在开始做题之前,我们首先回忆两条定理:

  1. 当长方形的底边相同时,其面积与高成正比
  2. 当一个矩形的面积一定时,其底边越短,其高越长

再来分析这道题:

  1. 列表头地址为头指针,列表尾地址为尾指针
  2. 头指针和尾指针指向的值中,较小的为矩形的高
  3. 由 1、2 可得:面积 = (尾指针 - 头指针)* 高
  4. 由定理 1、2 可得:当缩短头指针和尾指针间距离(|头指针 - 尾指针|)时,应当是指向高的那个指针向另一个指针靠拢。

代码

class Solution {
    public int maxArea(int[] height) {

        int maxArea = 0;
        int leftBorder = 0;
        int rightBorder = height.length - 1;

        while (leftBorder < rightBorder) {

            if (height[leftBorder] < height[rightBorder]) {
                maxArea = Math.max(maxArea, (rightBorder - leftBorder) * (height[leftBorder]));
                leftBorder ++;
            } else {
                maxArea = Math.max(maxArea, (rightBorder - leftBorder) * (height[rightBorder]));
                rightBorder --;
            }
        }

        return maxArea;
    }
}

标签:11,rightBorder,int,height,力扣,leftBorder,最多水,maxArea,指针
来源: https://www.cnblogs.com/scarecrow-wbl/p/15004795.html