这道题的暴力方法就是遍历所有两个木棍的组合,然后记录最大值。
而想要提升解题速度,可以采用双指针的方法,分别在两端向中心靠拢,根据木桶原则,每次由最短边向长边前进,记录最大盛水量:
class Solution:
def maxArea(self, height: List[int]) -> int:
l = 0
r = len(height) - 1
max_area = (r - l) * min(height[l], height[r])
while(l < r):
max_area = max(max_area, (r - l) * min(height[l], height[r]))
if height[l] < height[r]:
l+=1
else:
r-=1
return max_area
在开始解题时我虽然已经考虑到了双指针方法,但是是对于如何前进指针比较模糊,现在回头看感觉自己当时真够笨的。