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; } }