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 and n is at least 2.
/*
假如a[left]<a[right],则0-1,0-2,...,0-5都比0-6小,故left++
假如a[left]>a[right],则1-6,2-6,...,5-6都比0-6小,故right--
*/
/*
O(n^2)
public int maxArea(int[] height){
int max = Integer.MIN_VALUE;
int temp = 0;
for (int i=0;i<height.length;i++){
for (int j=height.length-1;j>i;j--){
temp = (height[i]>height[j]?height[j]:height[i])*(j-i);
if (temp>max){
max = temp;
}
}
}
return max;
}
*/
public int maxArea(int[] height){
int max = Integer.MIN_VALUE;
int left = 0;
int right = height.length-1;
while (left<right){
max = Math.max(max,Math.min(height[left],height[right])*(right-left));
if (height[left]<height[right]){
left++;
}
else{
right--;
}
}
return max;
}