11 Container With Most Water

1. Question

Given n non-negative integers a1,a2, ...,an, where each represents a point at coordinate (i,ai).n vertical lines are drawn such that the two endpoints of line i is at (i,ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container andnis at least 2.

2. Implementation

(1) Two Pointers

class Solution {
    public int maxArea(int[] height) {
        int res = 0;
        int start = 0, end = height.length - 1, curHeight = Integer.MAX_VALUE;

        while (start < end) {
            curHeight = Math.min(height[start], height[end]);
            res = Math.max(res, curHeight * (end - start));

            if (height[start] <= curHeight) {
                ++start;
            }
            else {
                --end;
            }
        }
        return res;
    }
}

3. Time & Space Complexity

时间复杂度O(n), 空间复杂度O(1)

Last updated