[leetcode] container with most water

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 and n is at least 2.

  • Two Pointers
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static int (int[] height) {
    int maxArea = 0;
    int i = 0;
    int j = height.length - 1;
    while (i < j) {
    maxArea = Math.max(maxArea, (j - i) * Math.min(height[i], height[j]));
    if (height[i] < height[j]) {
    i++;
    } else {
    j--;
    }
    }
    return maxArea;
    }