1.题目
2.题目意思
如图所示,给定一个列表,列表里每个数作为一个柱子,找出两个柱子,使得接的水最多。
3.代码
class Solution:
def maxArea(self, height: List[int]) -> int:
res=0
i=0
j=len(height)-1
while i<j:
temp=(j-i)*min(height[i],height[j])
if temp>res:
res=temp
if height[i]<height[j]:
i+=1
else:
j-=1
return res
思路:双指针
最简单的还是暴搜了,但是用双指针更好,而且简单且好理解。初始化两个指针分别指向数组首尾。然后计算能积多少水,temp=(j-i)*min(height[i],height[j])
,并更新结果res
的值。之后,长度短的指针向内部移动。因为既然要得到最大积水量,自然要保留长的,换掉短的~
冲冲冲