Container With Most Water
来源:互联网 发布:筛选出的数据求和 编辑:程序博客网 时间:2024/05/17 22:07
原题链接:https://leetcode.com/problems/container-with-most-water/description/
思路:这道题说白了就是求(j-i)*min(height[j],height[i])的最大值,其中i,j在[0,height.length-1]中。如果暴力破解一共要算n^2个值找出最大的,算法的目的就是减少需要计算的值,也就是说剔除掉肯定不是最大值的情况。我们观察这个式子有两部分组成,一部分是坐标差,一部分是min(height[j],height[i]),如果i,j变化了之后j-i变小,同时min(height[j],height[i])没有变大。那么这种情况下两部分相乘的值肯定没有变化前的值大,即可以剔除这种情况。
我们把两指针i和j放在数组首尾,每次找出较小指的指针向内移动,知道两指针相遇为止。那么最大值一定出现在这段过程中,因为如果是较大值的那个指针向内移动的话,j-i变小,同时min(height[j],height[i])可能会变小可能会不变,反正不可能变大,所以两部分相乘一定是会变小的,肯定不会是整个过程中的最大值。
public class ContainerWithMostWater { public int maxArea(int[] height) { int left = 0; int right = height.length-1; int maxArea = (right-left) * Math.min(height[left], height[right]); while(left < right) { if(height[left] < height[right]) { left++; } else { right--; } int temp = (right-left) * Math.min(height[left], height[right]); maxArea = Math.max(maxArea, temp); } return maxArea; }}
阅读全文
0 0
- Container With Most Water
- Container with most water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- 欧拉筛(bzoj 2818: Gcd)
- 初用Git之小结(一)
- 代价地图的层级结构
- python:2017.11.3
- list json序列化
- Container With Most Water
- TOP100summit:【分享实录-猫眼电影】业务纵横捭阖背后的技术拆分与融合
- CVPR2017-最新目标检测相关
- 基础知识总结:枚举
- 基础篇 Android IntentService
- 文章标题
- 正则表达式
- vw 和vh
- mac配置Apache的https