当前位置: 首页 > 知识库问答 >
问题:

盛水最多的容器

孟泽宇
2023-03-14

我正在看下面关于极客的问题

给定n个非负整数a_1,a_2,...,a_n其中每个表示坐标(i,a_i)处的一个点。'n'画垂直线,使得线i的两个endpoint在(i,a_i)和(i,0)处。找到两条线,它们与x轴一起构成一个容器,使得容器含有最多的水。

程序应该返回一个整数,该整数对应于可以容纳的水的最大面积(最大面积而不是最大体积听起来很奇怪,但为了简单起见,我们使用的是2D平面)。

问题链接:https://www.geeksforgeeks.org/container-with-most-water/

在这里,他们给出了以下例子和解释

Input : [1, 5, 4, 3]
Output : 6
Explanation : 
5 and 3 are distance 2 apart. 
So the size of the base = 2. 
Height of container = min(5, 3) = 3. 
So total area = 3 * 2 = 6

Input : [3, 1, 2, 4, 5]
Output : 12
Explanation : 
5 and 3 are distance 4 apart. 
So the size of the base = 4. 
Height of container = min(5, 3) = 3. 
So total area = 4 * 3 = 12

但我仍然不知道这个问题需要我做什么?比如,为什么在第一个示例中,他们选择了第二个和最后一个元素(5和3),而在第二个示例中,他们选择了第一个和最后一个元素?

共有1个答案

顾磊
2023-03-14

您必须确定输入中的哪两行,当它们在一起时,将创建水最多的容器。

对于第一个示例,对于1、5、4、3,其他一些选项包括:

>

  • 1和5:结果是1的面积(1个间隔*1个最小高度)

    1和4:结果是2的面积(2分开*1分钟高度)

    1和3:结果是3的面积(3分开*1分钟高度)

    5和4:结果是面积为4(1个间隔*4个最小高度)

    4和3:结果是3的面积(1间隔*1分钟高度)

    将5和3放在一起(相隔2;索引1和索引3)是所需的结果,因为它导致最高区域(3*2=6)。

    对于第二个示例,您的一些其他选项是:

    >

  • 3和1:结果是1的面积(1个间隔*1个最小高度)

    3和2:结果是4的面积(2分开*2分钟高度)

    3和4:结果是9的面积(3个间隔*3个最小高度)

    等。最高结果是3和5(相隔4;索引0和索引4),其面积为12(3*4)。

  •  类似资料:
    • 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝

    • 我正在研究中等水平的leetcode问题11。盛水的容器。除了O(n^2)的蛮力解外,还有一个复杂度为O(n)的最优解,它使用容器左右两侧的两个指针。我有点困惑,为什么这个“双指针”方法必须包含最优解。有人知道如何从数学上证明这个算法的正确性吗?这是一个我不知道的算法。非常感谢。 最初的问题是: 给定一个长度为n的整数数组高度。绘制了n条垂直线,使得第i条线的两个endpoint是(i,0)和(i

    • Leetcode#11盛水的容器 https://leetcode.com/problems/container-with-most-water/ 给定n个非负整数a1, a2,..., an,其中每个表示坐标(i, ai)处的点。绘制n条垂直线,使得线i的两个endpoint位于(i, ai)和(i,0)。找到两条线,它们与x轴一起构成一个容器,使得容器中包含最多的水。 请注意,容器不能倾斜。

    • 给定n个非负整数a1, a2,..., an,其中每个表示坐标(i, ai)处的一个点。绘制n条垂直线,使得线i的两个endpoint位于(i, ai)和(i,0)。找到两条线,它们与x轴一起构成一个容器,使得容器中包含最多的水 关于这个问题,我不理解的是,我应该如何知道n条垂直线的y坐标值(高度)。

    • 易盛运维类老哥可以私聊。最近收到了一面。 #易盛信息# #易盛信息校招# #郑商所#河南郑州

    • 我正在用最多的水制作leetcode#11容器 https://leetcode.com/problems/container-with-most-water/ 给定n个非负整数a1, a2,..., an,其中每个表示坐标(i, ai)处的点。绘制n条垂直线,使得线i的两个endpoint位于(i, ai)和(i,0)。找到两条线,它们与x轴一起构成一个容器,使得容器中包含最多的水。 注意:容器