主页 > 创业  > 

算法004——盛最多水的容器

算法004——盛最多水的容器

力扣——盛最多水的容器点击即可跳转

当我们选择1号线和8号线时,下标为 1 和 8 形成容器的容积的高度是由 较矮的决定的,即下标为 8 的位置; 而宽度则是 1到8 之间的距离,为 8-1=7,此时容器的容积为 7 * 7 = 49。 当我们选择1号线和6号线时,高度为 8,宽度为 5,此时容积为 40,这个情况没有示例一多,所以示例一就是容积最大的情况。

我们先不看那么多数,从简单的开始分析,例如,分析中间的 6到4,即数组为 [6,2,5,4]. 我们先选择6和4来计算容积,再选择其中较小的数来进行枚举,即以 4 来进行枚举,无论4跟谁一起容积都变小,所以4就不需要考虑了。 我们将这个规律用到整个数组中,利用双指针,在它们两个相遇前,计算出 V1,V2,V3……,再求出最大值。

代码如下

class Solution { public int maxArea(int[] height) { int left = 0; int right = height.length - 1; int volume = 0; while(left < right){ int v = Math.min(height[left],height[right]) * (right - left);//求的是V1,V2…… volume = Math.max(v,volume);//将最大值放到里面 if(height[left] < height[right]){//谁小谁换 left++; }else{ right--; } } return volume; } }

点个赞吧,谢谢你

标签:

算法004——盛最多水的容器由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“算法004——盛最多水的容器