151 DSA Problem journey

GAURAV YADAVGAURAV YADAV
2 min read

Q15:You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the i<sup>th</sup> 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.

Example :

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:
class Solution {
public:
    int maxArea(vector<int>& height) {
    int n = height.size();
    int left = 0;
    int right = n - 1;
    int watertrap = 0;
    while (left < right) {
        int h = min(height[left], height[right]);
        int w = right - left;
        int area = h * w;
        watertrap = max(watertrap, area);
        if (height[left] < height[right]) {
            left++;
        } else {
            right--;
        }
    }
    return watertrap;
    }
};

Explantion:
>The algorithm uses two pointers to represent the left and right boundaries of a container.
>It iteratively explores different configurations by moving the pointers towards each other, 
always choosing the pointer with the smaller height to potentially maximize the trapped water.
>This approach ensures efficient exploration of possible configurations in linear time

If anyone have better solution so please comment:)
18
Subscribe to my newsletter

Read articles from GAURAV YADAV directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

GAURAV YADAV
GAURAV YADAV

Experienced Full Stack Developer with proficiency in comprehensive coding skills, adept at crafting end-to-end solutions.