Container With Most Water Problem

Container With Most Water: 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.

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

Container With Most Water Problem Solution

Problem Solution In Python

class Solution:
    def maxArea(self, height: List[int]) -> int:
        largest = 0
        l, r = 0, len(height) - 1
        while l < r:
            area = (r- l) * min(height[l], height[r])
            largest = max(largest, area)
            if height[l] < height[r]:
                l += 1
            else:
                r -= 1
        return largest

Problem Solution In Java

public class Solution {
public int maxArea(int[] height) {
    int maxarea=0;
    int temparea=0;
    int m=0,n=height.length-1;
    while(m!=n){
        if(height[m]<height[n]){
            temparea=height[m]*(n-m);
            m++;
        }
        else{
            temparea=height[n]*(n-m);
            n--;
        }
        if(maxarea<temparea) maxarea=temparea;
    }
    return maxarea;
}
}

Problem Solution In C++

class Solution {
public:
    int maxArea(vector<int>& height) 
    {
        int res=0,left=0,right=height.size()-1;
        while(left<right)
        {
            int lower=height[height[left]<height[right]?left++:right--];
            res=max(res,(right-left+1)*lower);
        }
        return res;
    }
};

Problem Solution In C

int min(int a, int b) {
    return((a < b) ? a : b);
}
int maxArea(int* height, int heightSize) {
    int maxArea=0, area;
    int i, j, w, h;
    
    for (i = 0, j = heightSize-1; i < j; ) {
        h = min(height[j], height[i]);
        w = j-i;
        area = h * w;
        maxArea = (area > maxArea) ? area : maxArea;
        (height[i] > height[j]) ? j-- : i++; 
    }
    return(maxArea);
}


If You Like This Page Then Make Sure To Follow Us on Facebook, G News and Subscribe Our YouTube Channel. We will provide you updates daily.
Shares
facebook sharing button Share
twitter sharing button Tweet
whatsapp sharing button Share
telegram sharing button Share
pinterest sharing button Pin

Leave a Comment