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
Table of Contents
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);
}