11.盛最多水的容器

题目描述:

示例:

输入: [1,8,6,2,5,4,8,3,7]
输出: 49

解答1:暴力破解法:

public static int maxArea(int[] height) {
        int max = 0;
        //直接暴力,注意取值边界
        for (int i = height.length - 1; i > 0; i--) {
            for (int j = i - 1; j >= 0; j--) {
                //巧用Math.max()存储不断变化的最大值
                max = Math.max(max, (i - j) * (Math.min(height[j], height[i])));
            }
        }
        return max;
    }

解答2:双指针法:

public static int maxArea1(int[] height) {
        //定义左右双指针
        int left=0,right=height.length-1,area=0,min=0;
        while(left>=0&&right

注意:

1.巧用 Math.min()和Math.max()函数,存储不断变化的最大/最小值。
2.但不确定循环次数时,使用while循环,和双指针++(自增两个链表合一;字符串下标左右对称/变化)。

你可能感兴趣的:(11.盛最多水的容器)