欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

11.盛最多水的容器

时间:2023-06-27


第一次很难想到双指针的解法,参考链接 盛最多水的容器(双指针,清晰图解)
双指针容易实现,问题是为什么双指针最后的结果能保证容器盛的水最多?

证明:

代码如下:

class Solution: def maxArea(self, height: List[int]) -> int: # 双指针解法 left, right = 0, len(height) - 1 # 题目保证了height至少有两个值 res = 0 while left < right: if height[left] < height[right]: res = max(res, (right - left) * height[left]) # 更新最大面积,当前面积计算公式(right - left)(底边宽度) * height[left](短板高度) left += 1 # 可惜python不能直接left++,不然还可以更加简洁 else: res = max(res, (right - left) *height[right]) right -= 1 return res

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。