码迷,mamicode.com
首页 > 其他好文 > 详细

Container With Most Water

时间:2014-08-15 10:47:38      阅读:255      评论: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.

O(n^2)解法超时

public class Solution {
    public int maxArea(int[] height) {
        int area=0,newarea=0;
        int n=height.length;
        for(int i=0;i<n-1;i++){
            for(int j=i+1;j<n;j++){
                int minHeight=Math.min(height[i],height[j]);
                int width=height[j]-height[i];
                newarea=minHeight*width;
                if(area<newarea){
                    area=newarea;
                }
            }
        }
        return area;
    }
}

O(n)解法OK

public class Solution {
    public int maxArea(int[] height) {
        int result=0;
        int n=height.length;
        int low=0,high=n-1;
        while(low<high){
            int area=Math.min(height[high],height[low])*(high-low);
            if(result<area) result=area;
            if(height[high]>height[low]) low++;
            else high--;
        }
        return result;
    }
}


Container With Most Water,布布扣,bubuko.com

Container With Most Water

标签:算法

原文地址:http://blog.csdn.net/dutsoft/article/details/38580413

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!