leetcode NO.11:盛最多水的容器
问题的解法是双指针,左右连边靠拢,分别计算面积,理论上要全部遍历,但可以通过巧妙方法不用全部遍历
def maxArea(self, height: List[int]) -> int:
left = 0
right = len(height) - 1
ans = 0
maxh = max(height)
while left < right:
ans = max(ans,(right - left) * min(height[left],height[right]))
if height[left] < height[right]:
left += 1
else:
right -= 1
# 神奇的一步,(right-left)为下一循环的宽,有这段代码,则可以直接判断出最大的容器值
if ans >= maxh * (right - left):
break
return ans
就是这一步,实现直接判断最大容器值,而无需全部遍历后才可得
if ans >= maxh * (right - left):
break
个人怎么想也想不明白为什么这一步是什么原理实现直接找出最大的值,不知各位能否解答一下