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.
Notice that you may not slant the container.
Example 1:
![]() |
container with most water |
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 :
container with most water problem is solved by using the two pointer concept. the container with most water gfg is same as on leetcode.
- Start by evaluating the widest container, using the first and the last line.
- All other possible containers are less wide, so to hold more water, they need to be higher.
- Thus, after evaluating that widest container, skip lines at both ends that don't support a higher height.
- Then evaluate that new container we arrived at. Repeat until there are no more possible containers left.
class Solution {
public:
int maxArea(vector<int>& height) {
int size_height = height.size();
int i = 0 ;
int j = size_height -1;
int result= INT_MIN ;
while(i <= j)
{
result = max(result , (j-i)*(min(height[j] , height[i])));
if(height[i] < height[j])
{
i++;
}
else
{
j--;
}
}
return result;
}
};
Any problem ? comment down , i will try to help..
Follow this blog to learn something new .
Comments
Post a Comment