11. Container With Most Water

需要变量:i,j指针代表宽度,局部变量area = (j - i) * min(height[i], height[j])当前计算的面积,全局变量result存放最大面积。i前进的条件是height[i] < height[j],因为要向右边试探有没有更大的高度,然后消除当前的高度最小值,保留高度最大值。

时间复杂度O(n)

public int maxArea(int[] height) {
    int result = 0;
    int i = 0, j = height.length - 1;
    while (i < j) {
        int area = (j - i) * Math.min(height[i], height[j]);
        result = Math.max(result, area);
        if (height[i] < height[j]) {
            i++;
        } else {
            j--;
        }
    }
    return result;
}

results matching ""

    No results matching ""