http://www.lintcode.com/en/pr...
Container with Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
**思路**
对撞指针问题, Volume = Width * Min(left_Height, right_Height). 求最大体积,当缩小宽度时, 则高度必须比原来大。---->两边指针选较小的一个靠近直到比原来的Height大。 # 此程序实现中省略了内层while。
public class Solution {
public int maxArea(int[] height) {
if (height == null || height.length < 2){
return 0;
}
int res = 0;
int left = 0, right = height.length -1;
while (left < right){
int minHeight = Math.min(height[left], height[right]);
res = Math.max(res, minHeight * (right - left));
if (height[left] < height[right]){
left ++;
}
else{
right --;
}
}
return res;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。