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

leetcode 11. Container With Most Water

2016-04-29 14:25 411 查看
//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.

public class Solution {

public static void main(String[] args) {
int[] a = {1,2,3,4};
int result = maxArea(a);
System.out.println(result);
}

public static int maxArea(int[] height) {
//        int result = 0;										//遍历height数组时间复杂度太大,无法通过
//        int maxArea = 0;
//        for(int i = 0;i<height.length;i++){
//        	for(int j = i+1;j<height.length;j++){
//        		if(height[i]<height[j]){
//        			maxArea = (j-i)*height[i];
//        		}else{
//        			maxArea = (j-i)*height[j];
//        		}
//
//        		if(result<maxArea){
//        			result = maxArea;
//        		}
//        	}
//        }
//
//        return result;

int result = 0;
int maxArea = 0;
int left = 0;
int right = height.length-1;
while(right>left){										//从两头向中间遍历height
if(height[left]>height[right]){						//若左边的高度大于右边,则将right左移
maxArea = height[right]*(right-left);
right--;
}else{												//若右边高度大于左边,则将left右移
maxArea = height[left]*(right-left);
left++;
}
if(maxArea>result){									//找到最大的容积
result = maxArea;
}
}
return result;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: