public class Client {
public static void main(String[] args) {
int[] height = {2,8,3,4};
int area = maxContainer(height);
System.out.println(area);
}
/**
*求数组能组成的最大面积
*/
static int maxContainer(int[] height) {
int area = 0;
int left = 0;
int right = height.length - 1;
while (left < right){
area = Math.max(area,(right - left) * Math.min(height[left],height[right]));
// 总是移动小的一条边
// 如果移动大边,则新边可能变大也可能变小,但总体是变小的
// 如果移动小边,则新边的高度可能变大,导致整体变大
// 如果相同,则单移动一边整体还是变小,同时移动两边可能变大
if(height[left] > height[right]){
right--;
}else if(height[left] < height[right]){
left++;
}else {
left++;
right--;
}
}
return area;
}
}