题目:
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.
题意:
给一个数组,其中数组的值表示的是一个坐标(i,ai),那么现在就会有n条垂直的直线,然后这些直线和底下的x轴合成表示一个盛水的容器,然后求这个盛水容器的面积最大是多少?
题解:
首先我们计算,横坐标最大的时候,这种情况下,已经保证了横坐标是最大了,那么只需要考虑纵坐标,而这个面积是由两个纵坐标中的较小那个所决定的,所以我们可以计算这个纵坐标的值,如果刚才的那个面积中纵坐标的开头的那个比末尾的那个要小,那么就将开头的那个+1,否则就将末尾的那个-1.一次类推。
public class Solution
{
public int maxArea(int[] height)
{
int length = height.length;
if(length == 0 || height == null)
return 0;
int start = 0;
int end = length - 1;
int max = 0;
while(start < end)
{
int area = Math.min(height[start],height[end]) * (end - start);
max = Math.max(max,area);
if(height[start] <= height[end])
start++;
else
end--;
}
return max;
}
}