leetcode——11.盛最多水的容器

双指针法:

class Solution:
    def maxArea(self, height) -> int:
        if len(height)<=1:
            return 0
        #双指针法
        i,j,S=0,len(height)-1,0
        while i<j:
            if height[i]<height[j]:
                S=max(S,height[i]*(j-i))
                i+=1
            else:
                S=max(S,height[j]*(j-i))
                j-=1
        return S
执行用时 :148 ms, 在所有 Python3 提交中击败了82.08%的用户
内存消耗 :15.5 MB, 在所有 Python3 提交中击败了5.18%的用户
 
                                                      ——2019.10.7
 

用时14分钟50秒:
public int maxArea(int[] height) {
        int n = height.length;
        int max_right = height[n-1];
        int max_area = 0;
        for(int j = n-1;j>=1;j--){
            if(j==(n-1) || height[j] > max_right){
                max_right = height[j];
                for (int i = 0; i < j; i++) {
                    max_area = Math.max(max_area, Math.min(height[i], height[j]) * (j - i));
                }
            }
        }
        return max_area;
    }

 

 

public int maxArea(int[] height) {
        int n = height.length;
        int max_area = 0;
        int i = 0;
        int j = n-1;
        while (i<j){
            if(height[i]<height[j]){
                max_area = Math.max(max_area, height[i] * (j - i));
                i++;
            }else{
                max_area = Math.max(max_area, height[j] * (j - i));
                j--;
            }
        }
        return max_area;
    }

 

 ——2020.8.5

posted @ 2019-10-07 22:19  欣姐姐  阅读(213)  评论(0编辑  收藏  举报