- 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 弟弟快看-教程,程序员编程资料站,版权归原作者所有
本文经作者:负雪明烛 授权发布,任何组织或个人未经作者授权不得转发
一个我希望不会听起来很疯狂的问题:在一个多语言站点上,想象几个实际的文件,其中包含当前可以通过其文件名访问的内容: website.org/en/tomato.php website.org/nl/t
1.Laugh eyes and lie face 2.Forever in my heart . Forever be my world .You are my only one. 3.Lik
本文关键词:盛水,容器,题解,leetcode, 力扣,python, c++, java 题目地址:https://leetcode.com/problems/container-with-mos
Reset password browser1.Link(Find.ById("submitButton")).KeyPress('\r'); browser
我一直在努力实现这里看到的一波一圈的效果: http://www.jquery-az.com/css/demo.php?ex=131.0_1 不幸的是,我无法使用我自己的 svg 使动画流畅地重复,参
我在 Water Jug 问题的爬山算法中遇到问题: Given two jugs, one of which can accommodate X liters of water and the ot
假设在一个城镇附近有一座大坝。大坝顶部有一个大洞,如下图所示。 水以 1 m2/s 的速度从这个洞中流出,建筑物在水下。建筑物屋顶长度为 1 m,高度为整数。给定一个特定的建筑物,我们必须计算建筑物低
题目地址:https://leetcode-cn.com/problems/string-to-integer-atoi/ 题目描述 Given n non-negative integers r
以下代码引发编译错误。我是编程新手,所以不知道还能做什么。我按照类里面教的做,但做不好。有人可以帮我解决这个问题吗? #include #include int main(void) { int
给定两个初始为空的桶 A 和 B,容量为 m 升和 n 升,目标是使用这两个桶准确地测量 k 升水。假设 m、n 和 k 是正整数并且 k node 关系的字典。 为它创建一个新节点和一个 (0,0
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
题目地址: https://leetcode.com/problems/pacific-atlantic-water-flow/description/ 题目描述 Given an m x n m
我正在寻求实现一个过程,偶尔会从 DocumentDb 中提取所有"new"记录,其中 new 是“自上次运行该过程以来添加或修改的所有文档。” SQL Server 为此提供了行版本,保证数据库中所
已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 挑战 按字符数计算的最短代码,用于根据输入的土地 ASCII 表示形式识别和标记水洼。 输入将
我有一个表,其中包含来自流量计的数据,排列如下: Water.Year May Jun Jul Aug Sep Oct Nov Dec Jan Feb
http://codepen.io/Khangeldy/pen/gPJoxJ JS // init camera, scene, renderer var scene, camera, rendere
[这里以 findbugs 为例,问题适用于任何此类 maven 插件] 不久前我参加了一个构建讲座,谈到了一个我非常喜欢的模式是:当向链中添加一个新工具并且你从 n 次违规开始时,你应该保持 n 减
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便它可以重新打开, visit the help center 。
我是使用 H2O 的新手。我正在尝试使用 GBM 运行 H2OGridSearch 以获得我最好的超参数。我正在按照 H2O-AI Github repo 给出的说明进行操作.当我尝试回归时它运行良好
我是一名优秀的程序员,十分优秀!