-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathContainerWithMostWater.py
39 lines (30 loc) · 1.07 KB
/
ContainerWithMostWater.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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.
def maxArea(height):
ptr1 = 0
ptr2 = len(height) - 1
smallest = min(height[ptr1], height[ptr2])
maxHeight = smallest * (ptr2 - ptr1)
while ptr1 < ptr2:
if height[ptr1] < height[ptr2]:
ptr1 += 1
else:
ptr2 -= 1
smallest = min(height[ptr1], height[ptr2])
tempHeight = smallest * (ptr2 - ptr1)
if tempHeight > maxHeight:
maxHeight = tempHeight
return maxHeight
#Test cases
height = [1,8,6,2,5,4,8,3,7]
print(maxArea(height))
height = [1,1]
print(maxArea(height))
height = [1,2,1]
print(maxArea(height))
height = [2,3,4,5,18,17,6]
print(maxArea(height))
height = [1,3,2,5,25,24,5]
print(maxArea(height))