Container With Most Water

/*

失败 超时o(n^2) 的时间复杂度;

两层for循环 遍历数组 heigh小的 * x轴的差值 大的数储存在ans中;

class Solution {

    public int maxArea(int[] height) {

        if(height.length < 2) return 0;


        int ans = 0;

        for(int i = 0; i < height.length - 1; i++) {

            for(int j = i + 1; j < height.length; j++) {

                ans = Math.max(ans, (j - i) * Math.min(height[i], height[j]));

            }

        }

        return ans;

    }

}

*/

//思路是 x轴确定了宽度 y轴决定了高度;

//两个指针 一个从头开始 一个从尾开始  从y轴来看 决定水体面积的是短的一端 所以移动短的一端可以得到最后的答案。

class Solution {

    public int maxArea(int[] height) {

        if(height.length < 2) return 0;


        int ans = 0;

        int start = 0;

        int end = height.length - 1;


        while(start < end) {

            ans = Math.max(ans, (end - start) * Math.min(height[start], height[end]));

            if(height[start] < height[end]) {

                start++;

            }else {

                end--;

            }

        }

        return ans;

    }

}

你可能感兴趣的:(Container With Most Water)