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.

Solution:

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