您的位置:首页 > 大数据 > 人工智能

【Leetcode】Container With Most Water (Water)

2014-10-26 08:59 369 查看
这道题是给了一大堆的高度,然后宽度为两个高度之间编号之差, 利用水桶定理求面积即可。

所以先定义左右指针,左指针指向0,右指针指向array.length-1, 然后往中间夹逼即可。

定理一: 短板定理 Area=Math.min(left, right)*(right-left)

定理二; 改善定理 当left<right时,短板一定在左边,只有移动左指针才有可能改善面积

    当left>right时,短板一定在右边,只有移动右指针才有可能改善面积

面积公式如下:

width=right-left

height=Math.min(Height[left], Height[right])

area=width*height

直接上代码

public int maxArea(int[] height) {
int area = 0;
int left = 0;
int right = height.length - 1;

while (left < right) {
int currHeight = Math.min(height[left], height[right]);
area = Math.max(area, (right - left) * currHeight);
if (height[left] < height[right])
left++;
else
right--;
}
return area;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: