- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
本文关键词:盛水,容器,题解,leetcode, 力扣,python, c++, java
题目地址:https://leetcode.com/problems/container-with-most-water/description/
Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container and n is at least 2.
Theabove vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.
Example:
Input: [1,8,6,2,5,4,8,3,7]
Output: 49
有很多挡板,从这些挡板中选两个,然后计算能够成的面积的最大值。
如果纯暴力计算两两之间的面积,时间复杂度是O(N^2),肯定会超时。
一个比较好的解决的方法是,使用双指针方法,一个从最左边开始,一个从最右边开始,计算两个挡板之间的面积,然后在向中间移动。移动的规则是这样的,如果哪个挡板比较矮,就舍弃掉这个挡板,把指向这个挡板的指针向中间移动。
这样的移动方式是我们每次都保留了比较长的哪个挡板,也就能获得更多的水。当两个挡板的高度一样的话,移动任意一个即可,因为这两个是高度一样的挡板,如果中间有更高的挡板,那么当前的挡板决定了以后的挡板的最低值,也就是说以其中任意一个为边界的容器面积不可能超过当前的当前的值。
我们在遍历的过程中需要保留遍历时候得到的最大值,最后返回即可。
时间复杂度是O(N),空间复杂度是O(1).
代码如下:
class Solution(object):
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
ans = 0
l = 0
r = len(height) - 1
while l < r:
ans = max(ans, min(height[l], height[r]) * (r - l))
if height[l] < height[r]:
l += 1
else:
r -= 1
return ans
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
参考资料:
https://www.youtube.com/watch?v=IONgE6QZgGI https://leetcode.com/articles/container-with-most-water/ https://leetcode.windliang.cc/leetCode-11-Container-With-Most-Water.html
DDKK.COM 弟弟快看-教程,程序员编程资料站,版权归原作者所有
本文经作者:负雪明烛 授权发布,任何组织或个人未经作者授权不得转发
我正在使用 suds 库从网络服务中获取产品列表。 这是一个示例代码: from suds.client import Client url = 'WSDLURL' client = Client(u
如何在我的 spriteKit 应用程序中获取少量液体? 我想要那种液体放在一个容器里,它会被密封在里面,但我希望它能够四处移动。 有没有更好的方法来实现这个?也许没有 SpriteKit 的选项?
我正在尝试使用 Soap API 将一些文件附加到 Jira。我有 python 2.6 并且 SOAPpy 不再工作,所以,我正在使用 suds。除了附件之外一切都很好...我不知道如何重写这段代码
请建议库在 python 中使用 soap。 现在,我正在尝试使用“suds”,我无法理解如何从服务器回复中获取 http header 代码示例: from suds.client import C
我正在使用 OpenGL 开发 3d 游戏,并希望将其带入幻想的方向。具体来说,我正在考虑拥有具有火、水、冰和闪电效果的魔法。我的问题是我不知道如何创建这些效果。有没有关于如何学习这样的东西的资源?
这是我多年来依赖这个网站后的第一个问题! 无论如何,我想完成类似这种效果的事情: http://www.flashmonkey.co.uk/html5/wave-physics/ 但在圆形路径上,而不
我正在尝试解决 SPOJ 中的以下问题: On a rectangular mesh comprising nm fields, nm cuboids were put, one cuboid on
我在 Django(1.3、python 2.7)中使用 Suds 时遇到一些问题。 当我在脚本中使用 suds 检索数据时,它可以工作;但是如果我将**完全相同的**代码放入 django View
我是 的新手WATIR 或 Selenium,但我试图在我的 WATIR 浏览器中添加一个 cookie,如下所示: browser = Watir::Browser.new :firefox
我想知道是否有可能在 Google map 或 Bing Mag 2D/3D map 上恢复地形类型(山脉、森林、水域、平原等...) 。为了根据玩家在现实世界中的位置生成 map !我认为可用 AP
我是一名优秀的程序员,十分优秀!