[Problem Link]

- Use a typical 2 pointer approach to solve this problem.
**At step 1 assume your max container spans two ends**.
**What is the area of a container given i and j?** It is the width of the container (j-i) x height of the container (which is bounded by the min(heights[i], heights[j]).
**Moving which of these pointers might possibly increase the area of our container in the next step?** It seems like the minimum of the two heights is holding back so lets move the pointer pointing to min(heights[i], heights[j]).

class Solution {
public int maxArea(int[] height) {
int i = 0 ;
int j = height.length-1;
int max = Integer.MIN_VALUE;
while ( i < j ) {
int currwidth = j-i;
int currheight = Math.min(height[i], height[j]);
max = Math.max(max, currwidth*currheight);
if ( height[i] < height[j] )
i++;
else
j--;
}
return max;
}
} |

class Solution {
public int maxArea(int[] height) {
int i = 0 ;
int j = height.length-1;
int max = Integer.MIN_VALUE;
while ( i < j ) {
int currwidth = j-i;
int currheight = Math.min(height[i], height[j]);
max = Math.max(max, currwidth*currheight);
if ( height[i] < height[j] )
i++;
else
j--;
}
return max;
}
}