`
wangqisen
  • 浏览: 47293 次
文章分类
社区版块
存档分类
最新评论

LeetCode Container With Most Water

 
阅读更多

Givennnon-negative integersa1,a2, ...,an, where each represents a point at coordinate (i,ai).nvertical lines are drawn such that the two endpoints of lineiis 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;
    }
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics