# 给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和(i, height[i])。
# 找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。
# 返回容器可以储存的最大水量。
# 说明:你不能倾斜容器。
#
# 示例
# 1:
# 输入:[1, 8, 6, 2, 5, 4, 8, 3, 7]
# 输出:49
# 解释:图中垂直线代表输入数组[1, 8, 6, 2, 5, 4, 8, 3, 7]。
# 在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。
#
# 示例
# 2:
# 输入:height = [1, 1]
# 输出:1
#
# 提示:
# n == height.length
# 2 <= n <= 105
# 0 <= height[i] <= 104
class Solution(object):
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
l, r, a = 0, len(height) - 1, 0
while l < r:
a = max(min(height[l], height[r]) * (r - l), a)
if height[l] < height[r]:
l += 1
else:
r -= 1
return a
if __name__ == '__main__':
solution = Solution
num = solution.maxArea(solution, [1, 8, 6, 2, 5, 4, 8, 3, 7])
print(num)
num = solution.maxArea(solution, [1, 1])
print(num)
# 输出结果
49
1