【LeetCode】盛最多水的容器

By | 1月 24, 2022

给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水

思路:

采用双指针,L从前往后,R从后往右遍历,每次比较L和R的大小,将小的指针向右(向左)移动,并判断围成的面积大小。

class Solution {
    public int maxArea(int[] height) {
       int max = 0;
       int l = 0, r = height.length-1;
       while(l < r){
           int h = height[r]>height[l]?height[l]:height[r];
           int s = (r-l)*h;
           max = s>max?s:max;
           if(height[r]>height[l]){
               l++;
           }else{
               r--;
           }
       }
       return max;
    }
}

发表评论

您的电子邮箱地址不会被公开。