求数组能组成的最大面积

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;
    }
}
原文地址:https://www.cnblogs.com/dongma/p/12731004.html