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;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容