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

Container With Most Water Leetcode Solution :
Constraints :
- n == height.length
- 2 <= n <= 105
- 0 <= height[i] <= 104
Example 1:
- Input: height = [1,1]
- Output: 1
Intuition :
The two-pointer technique starts with the widest container and moves the pointers inward based on the comparison of heights.
Increasing the width of the container can only lead to a larger area if the height of the new boundary is greater. By moving the pointers towards the center, we explore containers with the potential for greater areas.
- Initialize the variables:
- left to represent the left pointer, starting at the beginning of the container (index 0).
- right to represent the right pointer, starting at the end of the container (index height.size() – 1).
- maxArea to keep track of the maximum area found, initially set to 0.
- Enter a loop using the condition left < right, which means the pointers have not crossed each other yet.
- Calculate the current area:
- Use the min function to find the minimum height between the left and right pointers.
- Multiply the minimum height by the width, which is the difference between the indices of the pointers: (right – left).
- Store this value in the currentArea variable.
- Update the maximum area:
- Use the max function to compare the currentArea with the maxArea.
- If the currentArea is greater than the maxArea, update maxArea with the currentArea.
- Move the pointers inward: (Explained in detail below)
- Check if the height at the left pointer is smaller than the height at the right pointer.
- If so, increment the left pointer, moving it towards the center of the container.
- Otherwise, decrement the right pointer, also moving it towards the center.
- Repeat steps 3 to 5 until the pointers meet (left >= right), indicating that all possible containers have been explored.
- Return the maxArea, which represents the maximum area encountered among all the containers.

Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Code :
class Solution { public: int maxArea(vector< int>& height) { int left = 0; int right = height.size() - 1; int maxArea = 0; while (left < right) { int currentArea = min(height[left], height[right]) * (right - left); maxArea = max(maxArea, currentArea); if (height[left] < height[right]) { left++; } else { right--; } } return maxArea; } };
class Solution { public int maxArea(int[] height) { int left = 0; int right = height.length - 1; int maxArea = 0; while (left < right) { int currentArea = Math.min(height[left], height[right]) * (right - left); maxArea = Math.max(maxArea, currentArea); if (height[left] < height[right]) { left++; } else { right--; } } return maxArea; } }
class Solution: def maxArea(self, height: List[int]) -> int: left = 0 right = len(height) - 1 maxArea = 0 while left < right: currentArea = min(height[left], height[right]) * (right - left) maxArea = max(maxArea, currentArea) if height[left] < height[right]: left += 1 else: right -= 1 return maxArea
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others
Login/Signup to comment