class Solution(object):
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
n = len(height)
s = 0
h1, h2 = 0, 0
# 双层for循环的做法,O(n^2)
# w = abs(h1- h2)
# for i in range(0, n-1):
# for j in range(i+1, n):
# width = j - i
# h = min(height[i], height[j])
# if width*h > s :
# s = width * h
# 双指针的做法,两个指针依次从左右两端,相向而走
# 每次都选择最小的那个往中间的方向移动一格
left, right = 0, n-1
while left != right:
w = right - left
h = min(height[left], height[right])
if w*h > s:
s = w*h
if height[left] < height[right]:
left += 1
else:
right -= 1
return s
11.盛水最多的容器
最新推荐文章于 2024-09-27 00:45:01 发布