IDEAs
- The biggest container of each line is composed with another line longer than itself.
- Sort lengths.
- For each line, find the farest one among lines longer than itself.
Submission Detail
47 / 50 test cases passed. |
CODE
class Solution:
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
hei_dic1 = {}
hei_dic2 = {}
length = len(height)
for i in range(length):
# key:i; value: ai
hei_dic1[i] = height[i]
# sort by value
hei_dic2=sorted(hei_dic1.items(),key=lambda x:x[1])
re = 0
for i in range(length - 1):
index = i + 1
dis = abs(hei_dic2[i][0] - hei_dic2[index][0])
# find the farest ai from right side of i
for j in range(i + 1, length, 2):
temp1 = abs(hei_dic2[i][0] - hei_dic2[j][0])
if temp1 > dis:
index = j
dis = temp1
if j + 1 > length - 1:
break
temp2 = abs(hei_dic2[i][0] - hei_dic2[j+1][0])
if temp2 > dis:
index = j
dis = temp2
if hei_dic2[i][1] * dis > re:
re = hei_dic2[i][1] * dis
return re