力扣 11 盛水最多的容器(双指针 ,java)

在这里插入图片描述
在这里插入图片描述
    这个题其实就是左右指针跑,然后计算面积,更新面积。左指针定义在0的位置,右指针定义在height.length-1的位置,然后算出面积,更新面积,如果左指针指向的高比右指针小,左指针加加,如果右指针指向的高比左指针指向的高小,右指针减减,再计算面积,然后更新面积。

class Solution {
    
    //一般有两个边界的时候,优先考虑双指针
    public int maxArea(int[] height) {
    
    
     int i=0;
     int j=height.length-1;
     int amax=0;
     while(i<j) {
    
    
         int area=Math.min(height[i],height[j])*(j-i);
         if(amax<area) 
            amax=area;
        if(height[i]<height[j]) i++;//如果左边的边小就移动左指针
        else j--;//否则移动右指针
     }
     return amax;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_51656756/article/details/121311072