美文网首页
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