method: 2 pointers
1 i: left pointer, j: right pointer, at both side
2 this may have the largest value, then i to right, j to left
3 until i >= j, stop loops and return result
Python:
class Solution:
def maxArea(self, height: List[int]) -> int:
i = 0
j = len(height)-1
res = 0
while(i < j):
res = max(res, min(height[i], height[j])*(j-i))
if height[i] < height[j]:
i = i+1
else:
j = j-1
return res
JS:
var maxArea = function(height) {
let i = 0;
let j = height.length - 1;
let res = 0;
while (i < j) {
res = Math.max(res, Math.min(height[i], height[j]) * (j - i));
height[i] < height[j] ? i++ : j--;
}
return res
};