meta data for this page
  •  

Container With Most Water

Leetcode


You are given an integer array height of length n. There are n vertical lines are drawn such that the two endpoints of the ith line is (i, 0) and (i, height[i]).

Find two lines that together with the x-axis form a container, such that the container contains the most water.

Return the maximum amount of water a container can store.

Notice that you may not slant the container.

Example 1:

s3-lc-upload.s3.amazonaws.com_uploads_2018_07_17_question_11.jpg

Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49
Explanation: The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, 
the max area of water (blue section) the container can contain is 49.

Solution 1

Solution 1

public int maxArea(int[] height) {
  if (height == null || height.length < 2) {
    return 0;
  }

  int s = 0;
  for (int a = 0; a < height.length; a++) {
    for (int b = a + 1; b < height.length; b++) {
      int s2 = ((int)Math.min(height[a], height[b])) * (b - a);
      if (s2 > s) {
        s = s2;
      }
    }
  }
  return s;
}