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 linei 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.
Subscribe to see which companies asked this question
给定n个非负整数a1,a2,...,an,其中每个表示坐标(i,ai)处的点。绘制n条垂直线,使得线i的两个端点在(i,ai)和(i,0)。找到两条线,它们与x轴一起形成一个Container ,即:就是说,x轴上在1,2,...,n点上有许多垂直的线段,长度依次是a1, a2, ..., an。找出两条线段,使他们和x抽围成的面积最大。面积公式是 Min(ai, aj) X |j - i|
package leetcode;
/**
*
* @author Mouse
*
*/
public class Solution {
public static int maxArea(int[] height) {
int start = 0;
int end = height.length-1;
int max = 0;
while (start < end) {
int temp = (end - start)
* (height[start] >height[end] ? height[end]
: height[start]);
if (temp > max) {
max = temp;
}
if (height[start]<height[end]) {
int k=start;
while (k<end&&height[k]<=height[start]) k++;
start=k;
}else{
int k=end;
while (k>start&&height[k]<=height[end]) k--;
end=k;
}
}
return max;
}
public static void main(String[] args) {
int[] height = { 2, 3, 4, 5, 18, 17,6};
int max=maxArea(height);
System.out.println(max);
}
}