Added O(N) Solution with comments
This commit is contained in:
parent
d8d82396e3
commit
f847a77884
@ -3,20 +3,33 @@ def maxArea(height):
|
||||
:type height: List[int]
|
||||
:rtype: int
|
||||
"""
|
||||
n = len(height)
|
||||
container = []
|
||||
# n = len(height)
|
||||
# container = []
|
||||
|
||||
# Handle edge-case
|
||||
if n == 2:
|
||||
return min(height)
|
||||
# # Handle edge-case
|
||||
# if n == 2:
|
||||
# return min(height)
|
||||
|
||||
for i in range(n):
|
||||
for j in range(i+1,n):
|
||||
index = min(height[i], height[j])
|
||||
dist = j-i
|
||||
container.append(index*dist)
|
||||
return max(container)
|
||||
# return container
|
||||
# for i in range(n):
|
||||
# for j in range(i+1,n):
|
||||
# index = min(height[i], height[j])
|
||||
# dist = j-i
|
||||
# container.append(index*dist)
|
||||
# return max(container)
|
||||
# # return container
|
||||
|
||||
# Solution O(N) https://youtu.be/Kb20p6zy_14?si=6B86Iwh0-O_Cww0Q
|
||||
max_area = 0
|
||||
l = 0
|
||||
r = len(height) - 1
|
||||
while l < r:
|
||||
area = (r - l) * min(height[r], height[l])
|
||||
max_area = max(max_area, area)
|
||||
if height[l] < height[r]: # Check to see if left or right is smaller
|
||||
l += 1
|
||||
else:
|
||||
r -= 1
|
||||
return max_area
|
||||
|
||||
print(maxArea([1,8,6,2,5,4,8,3,7])) #Output: 49
|
||||
print(maxArea([1,2,1])) #Output: 2
|
||||
|
||||
Loading…
Reference in New Issue
Block a user