题目描述请点击查看LeetCode 题目描述
Python3 代码解答如下:
class Solution:
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
"""
Python 抛弃暴力循环法,会导致超时。
思路:对于横坐标 x 来说,取差值较大的,并且第二个数的下标肯定大于第一个数的下标。因此,第一个数假定指向列表第一个元素,第二数假定指向列表最后一个元素,记录此时的最大面积。然后,判断纵坐标 y 的值,如果第一个数小于第二数,则第一个数向后移一位,否则第二数向前一位。
"""
max_area = 0
i = 0
j = len(height) - 1
while i < j:
a = min(height[i], height[j])
max_area = max(max_area, a*(j-i))
if height[i] < height[j]:
i=i+1
else:
j=j-1
print(max_area)
return max_area