首页 > 其他 > 详细

Container With Most Water

时间:2014-02-17 18:54:25      阅读:393      评论:0      收藏:0      [点我收藏+]

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) 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.

 

看了nandawys的评论,找到了O(n)方法,思路是从两头到中间扫描,设i,j分别指向height数组的首尾。
那么当前的area是min(height[i],height[j]) * (j-i)。
当height[i] < height[j]的时候,我们把i往后移,否则把j往前移,直到两者相遇。

 

bubuko.com,布布扣
public int maxArea(int[] height) {
        int start = 0;
        int end = height.length - 1;
        int max = 0;
        while(start < end){
            int container = Math.min(height[start], height[end]) * (end - start);
            if(max < container){
                max = container;
            }
            
            if(height[start] > height[end]){
                end --;
            } else {
                start ++;
            }
        }
        
        return max;
    }
bubuko.com,布布扣

Container With Most Water

原文:http://www.cnblogs.com/RazerLu/p/3552511.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!