leetcode盛水最多的容器

发布时间:2024年01月23日

给定一个长度为?n?的整数数组?height?。有?n?条垂线,第?i?条线的两个端点是?(i, 0)?和?(i, height[i])?。

找出其中的两条线,使得它们与?x?轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

示例 1:

输入:[1,8,6,2,5,4,8,3,7]
输出:49 
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为?49。

示例 2:

输入:height = [1,1]
输出:1

提示:

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104
  • 想通一件事:面积是由最短板决定的,那么较长的那个你如果去动他的话,变大了你的面积是不会变大的,变小了,你的面积是可能真的会变小。
  • class Solution {
        public int maxArea(int[] height) {
            int x=0;
            int y=height.length-1;
            int res=0;
            while(x<y){
                res=Math.max(res,Math.min(height[x],height[y])*(y-x));
                if(height[x]<height[y]){
                    x++;
                }else{
                    y--;
                }
            }
             return res;
        }
    }

文章来源:https://blog.csdn.net/m0_64119750/article/details/135745329
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。