1. 首页
  2. 软件开发
  3. day-43 盛最多水的容器

day-43 盛最多水的容器

  • 发布于 2024-09-26
  • 1 次阅读


思路
双指针:首先令i=0,j=height.length-1,选取短板(即Math.min(height[i],height[j])),然后将短板向内移动,直达i>=j即可得到答案。

解题过程
短板向内移动:水的容量可能增大
长板向内移动:水的容量不可能增大
所以只需要维护一个最大值max,通过短板的不断内移,维护max=Math.max(max,Math.min(height[i],height[j])*(j-i))即可。

Code

class Solution {

    public int maxArea(int[] height) {

        int len=height.length;
        int i=0;
        int j=len-1;
        int max=Math.min(height[i],height[j])*(j-i);
        while(i<j){

            if(height[i]<=height[j]){

                i++;
                max=Math.max(max,Math.min(height[i],height[j])*(j-i));
            }else{

                j--;
                max=Math.max(max,Math.min(height[i],height[j])*(j-i));
            }
        }
        return max;
    }
}

作者:菜卷
链接:https://leetcode.cn/problems/container-with-most-water/solutions/2897259/sheng-zui-duo-shui-de-rong-qi-by-ashi-ji-7w2y/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文链接: https://blog.csdn.net/qq_53568730/article/details/141688424