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

LeetCode Container With Most Water

2013-11-05 20:40 417 查看
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.

Note: You may not slant the container.

这一题的解题思路在于,其实不需要n^2的复杂度去遍历所有的左右边组合,只需要从两头网中间找,短边移动,碰到比该边大的边就计算容积是否满足大于原来容积的条件在,这样复杂度是n。

public class Solution {
public int maxArea(int[] height) {
int i=0,j=height.length-1;
int max=height[i]>height[j]?(height[j]*j):(height[i]*j);
while(i<j){
if(height[i]<height[j]){
int l=height[i];
while(height[i]<=l&&i<j)
i++;
int s=height[i]<height[j]?height[i]*(j-i):height[j]*(j-i);
if(s>max)
max=s;
}else{
int m=height[j];
while(height[j]<=m&&i<j)
j--;
int s=height[i]<height[j]?height[i]*(j-i):height[j]*(j-i);
if(s>max)
max=s;
}
}
return max;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: