化妆品排行榜
  1. 首页 >
  2. 美妆资讯 >
  3. 美妆 >
  1. leetcode11盛最多水的容器

美妆资讯
leetcode11盛最多水的容器
2023-08-05

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

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

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

说明:你不能倾斜容器。

示例 1:

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

示例 2:

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

提示:

n == height.length2 <= n <= 1050 <= height[i] <= 104

package leetcode;\n\npublic class MaxArea_11 {\n public int maxArea(int[] height) {\n if (height.length < 2) {\n return 0;\n }\n int area = 0;\n int li = 0;\n int ri = height.length - 1;\n int t = 0;\n\n while (true) {\n if (li == ri) {\n break;\n }\n int l = height[li];\n int r = height[ri];\n\n if (l < r) {\n li++;\n if (l <= t) {\n continue;\n } else {\n t = l;\n }\n } else {\n ri--;\n if (r <= t) {\n continue;\n } else {\n t = r;\n }\n }\n\n int width = ri - li + 1;\n int tArea = t * width;\n if (tArea > area) {\n area = tArea;\n }\n }\n\n return area;\n }\n\n public static void main(String[] args) {\n MaxArea_11 maxArea_11 = new MaxArea_11();\n int[] arr = {1, 8, 6, 2, 5, 4, 8, 3, 7};\n int i = maxArea_11.maxArea(arr);\n System.out.println(i);\n }\n}\n

版权声明:CosMeDna所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系删除!

本文链接://www.cosmedna.com/article/337917368.html