/**
* @author gentleKay
* 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.
*
* 给定n个非负整数a1,a2,…,an,其中每个表示一个坐标点(i,ai)。
* 画n条垂直线, {使线i的两个端点位于(i,ai)和(i,0)。(这句话可以不用看)}
* 找到两条线,与x轴一起构成一个容器,这样容器中的水就最多了。
* 注意:不要使容器倾斜。
*/
我个人觉得题目讲的不是很清楚,我查了一下,找到一张图。
这张图一看就很明了,让我们求得是,两条线之间的面积最大。
输入: [1,8,6,2,5,4,8,3,7]
输出: 49
图片的来源:https://blog.csdn.net/weixin_39364289/article/details/89146527
/**
* @author gentleKay
* 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.
*
* 给定n个非负整数a1,a2,…,an,其中每个表示一个坐标点(i,ai)。
* 画n条垂直线, {使线i的两个端点位于(i,ai)和(i,0)。(这句话可以不用看)}
* 找到两条线,与x轴一起构成一个容器,这样容器中的水就最多了。
* 注意:不要使容器倾斜。
*/
public class Main08 {
public static void main(String[] args) {
int[] height = {1,1};
System.out.println(Main08.maxArea(height));
}
public static int maxArea(int[] height) {
int start = 0;
int end = height.length-1;
int max = 0; int area = 0;
while (start < end) {
if (height[start] < height[end]) {
area = (end - start) * height[start];
start++;
}else {
area = (end - start) * height[end];
end--;
}
if (area > max) {
max = area;
}
}
return max;
}
}