美文网首页
11. Container With Most Water

11. Container With Most Water

作者: wtmxx | 来源:发表于2018-02-04 19:42 被阅读0次

    思路是首尾设置两个游标i,j。
    初始情况是宽度最宽,高度是height[i]和height[j]中较矮的一个。
    1.从矮的开始出发往中间靠拢,只有中间的柱子比较高时更新max
    2.重复1
    时间复杂度O(n)

    class Solution {
        public int maxArea(int[] height) {
            if(height.length<2)
                return 0;
            int i = 0,j = height.length-1;
            int max = 0;
            while(i!=j){
                if(height[i]<=height[j]){
                    max = Math.max(max,height[i]*(j-i));
                    int tmp = height[i];
                    i++;
                    while(i!=j){
                        if(height[i]>tmp)
                            break;
                        i++;
                    }
                }else{
                    max = Math.max(max,height[j]*(j-i));
                    int tmp = height[j];
                    j--;
                    while(i!=j){
                        if(height[j]>tmp)
                            break;
                        j--;
                    }
                }
            }
            return max;
        }
    }
    

    相关文章

      网友评论

          本文标题:11. Container With Most Water

          本文链接:https://www.haomeiwen.com/subject/cpqvzxtx.html