'''
给定一个长度为 n 的整数数组height。有n条垂线,第 i 条线的两个端点是(i, 0)和(i, height[i])。
找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
输入:[1,8,6,2,5,4,8,3,7]
输出:49
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。
输入:height = [1,1]
输出:1
'''
def maxArea(height):
maxarea = 0
left = 0
right = len(height) - 1
while left < right:
x = right - left
y = min(height[left], height[right])
maxarea = max(maxarea, x * y)
if height[left] < height[right]:
left += 1
else:
right -= 1
return maxarea
def maxArea_1(height):
maxarea = 0
for i in range(0, len(height)):
for j in range(i+1, len(height)):
x = j - i
y = min(height[i], height[j])
maxarea = max(maxarea, x*y)
return maxarea
if __name__ == '__main__':
print(maxArea([1, 8, 6, 2, 5, 4, 8, 3, 7]))
print(maxArea([1]))
print(maxArea([]))
print(maxArea([8, 8, 8, 1, 8, 1, 8]))
print(maxArea_1([1, 8, 6, 2, 5, 4, 8, 3, 7]))
print(maxArea_1([1]))
print(maxArea_1([]))
print(maxArea_1([8, 8, 8, 1, 8, 1, 8]))
LeetCode11
最新推荐文章于 2024-11-14 13:48:50 发布