首页 > 其他分享 >盛水最多的容器

盛水最多的容器

时间:2023-02-21 19:23:53浏览次数:29  
标签:容器 盛水 int minheight height maxArea Math

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

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

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

说明:你不能倾斜容器。

 

//class Solution { public int maxArea(int[] height) { int l = 0, r = height.length - 1; int maxArea = 0; while (l < r) { int area = (r - l) * Math.min(height[l], height[r]); int minH = Math.min(height[l], height[r]); maxArea = Math.max(maxArea, area); while (height[l] <= minH && l < r) { l++; } while (height[r] <= minH && l < r) { r--; } } return maxArea; } }

 

//思路:从最左和最右开始,每次选出两个中的最小高度,往后遍历的过程中直接跳过高度小于minheight的线,直到出现大于minheight的线才有可能得到更大的容器.

标签:容器,盛水,int,minheight,height,maxArea,Math
From: https://www.cnblogs.com/zzzzzzx/p/17142113.html

相关文章