20. Container With Most Water

Topic :

arrays

Difficulty :

medium

Problem Link :


problem statement

You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (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.

Image

Example 1:

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.
Example 2:

Input: height = [1,1]
Output: 1

Constraints:

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104

solution

import java.io.*;
import java.util.*;
 class Container_With_Most_Water
{
    public static void main(String args[])
    {
        int height[]={1,8,6,2,5,4,8,3,7};
        System.out.println(maxArea(height));
    }
    static int maxArea(int[] height) {
        int left=0;
        int right=height.length-1;
        int max=0;
        while(left<right)
        {
            int left_height=height[left];
            int right_height=height[right];
            int distance =right-left;
            max=Math.max(max,Math.min(left_height,right_height)*distance);
            if (left_height<right_height)
                left++;
            else 
                right--;
        }
        return max;
        
    }
  
}
Copyright © 2023 KIZLE. - All Rights Reserved.
Website by Kounik Maitra