Container With Most Water

Given $n$ non-negative integers $a_1, a_2, …, a_n$, where each represents a point at coordinate $(i, a_i)$. $n$ vertical lines are drawn such that the two endpoints of line $i$ is at $(i, a_i)$ 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.

Solution:

public class Solution {
    public int maxArea(int[] height) {
        int maxArea=0, l=0, r=height.length-1;
        while(l<r){
            maxArea = Math.max(maxArea, (r-l)*Math.min(height[l],height[r]));
            if(height[l]<height[r]){
                int cur = height[l];
                while(height[++l]<cur);
            } else {
                int cur = height[r];
                while(height[--r]<cur);
            }
        }
        return maxArea;
    }
}
comments powered by Disqus