题目:https://leetcode-cn.com/problems/container-with-most-water/
    方法一:暴力解法,时间复杂度 O(N2)

    1. public int maxArea(int[] height) {
    2. int maxS = 0;
    3. int tmpS = 0;
    4. for (int i = 0; i < height.length ; i++) {
    5. for (int j = i+1; j < height.length; j++) {
    6. if(height[i]<= height[j]){
    7. tmpS = height[i]*(j-i);
    8. }else{
    9. tmpS = height[j]*(j-i);
    10. }
    11. if(tmpS > maxS){
    12. maxS = tmpS;
    13. }
    14. }
    15. }
    16. return maxS;
    17. }

    方法二 :
    image.png
    思路:面积 : 两个柱子之间的距离d*两个柱子较小值min
    1、首先取最左和最右两个柱子,
    距离d=9-1 = 8
    较小值:min = 3
    面积 8x3 = 24
    2、如果最左边柱子不动(h=3),无论移动右边哪根柱子,都不可能比最右边的柱子距离更大,
    所以移动右边会让距离变小,因为最左边的柱子不动,所以水位最大值为3,整体来看,移动高的柱子会让面积变小
    3、如果最右边柱子不动,无论移动左边的哪根柱子,距离都会变小,但水位会变不确定,水位最大值为7,整体来看,移动矮的柱子面积变小变大不确定
    4、综上述,应该移动小的柱子

    时间复杂度o(n)

    1. public int maxArea(int[] height) {
    2. int left = 0;
    3. int right = height.length-1;
    4. int maxS = 0;
    5. while (left<right){
    6. maxS = Math.max(maxS,Math.min(height[left],height[right])*(right-left));
    7. if(height[left]<height[right]){
    8. left++;
    9. }else{
    10. right--;
    11. }
    12. }
    13. return maxS;
    14. }