目录
题目描述
给定一个长度为 n
的整数数组 height
。有 n
条垂线,第 i
条线的两个端点是 (i, 0)
和 (i, height[i])
。
找出其中的两条线,使得它们与 x
轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。
样例
代码
class Solution:
def maxArea(self, height: List[int]) -> int:
answer=0
i=0
j=len(height)-1
while(i!=j):
answer=max(answer,min(height[i],height[j])*(j-i))
if height[i]<height[j]:i+=1
else:j-=1
return answer
解题思路
双指针头尾各一个作为当前容器,然后向内遍历寻找是否有虽然变窄但是更高所以容积更大的容器;若是高的一侧向内移动的话,因为容器的高以矮的为准,故容积只会变少,所以每次都是矮的一侧指针向内移动1步,不断更新最大容积直至两个指针相遇。