11. Container With Most Water
解題的核心想法是有一句俗諺:水桶的最大容量決定於最矮的一邊。
題目給出的正是水桶高度,只是俗諺中的水桶,底部的面積都一樣,這個題目裡面,我們有不同的水桶面積與水桶壁的高度組合。
所以我們就不斷地從左右向中間逼近,逼近的技巧是,因為每次逼近的時候水桶底部面積都會縮小,所以我們要盡可能地保留比較高的邊,去嘗試看看在逼近到中間時,會不會有更高的水桶壁,進而去挑戰更多的容積。
class Solution:
def maxArea(self, height: List[int]) -> int:
left = 0
right = len(height) - 1
max_area = 0
while left < right:
width = right - left
max_area = max(max_area, min(height[left], height[right]) * width)
if height[left] < height[right]:
left += 1
else:
right -= 1
return max_area