Javascript 盛水的容器

Javascript 盛水的容器,javascript,Javascript,我正在讨论关于Geeksforgeks的以下问题 给定n个非负整数a_1,a_2,…,a_n其中 表示坐标(i,a_i)处的点。'垂直线是 绘制成线i的两个端点位于(i,a_i)和(i), 0). 找到两条线,它们与x轴一起构成一个容器,例如 容器中的水最多 程序应返回一个与最大值对应的整数 可容纳的水面积(最大面积而非最大面积 音量听起来很奇怪,但这是我们正在使用的2D平面 简单性) 问题链接: 在这里,他们给出了以下示例并进行了解释 Input : [1, 5, 4, 3] Output :

我正在讨论关于Geeksforgeks的以下问题

给定n个非负整数a_1,a_2,…,a_n其中 表示坐标(i,a_i)处的点。'垂直线是 绘制成线i的两个端点位于(i,a_i)和(i), 0). 找到两条线,它们与x轴一起构成一个容器,例如 容器中的水最多

程序应返回一个与最大值对应的整数 可容纳的水面积(最大面积而非最大面积 音量听起来很奇怪,但这是我们正在使用的2D平面 简单性)

问题链接:

在这里,他们给出了以下示例并进行了解释

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,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)。

您是否根据描述在一些纸上画出了示例?如果没有,那么就这么做:这很好地解释了。@Mike'Pomax'Kamerman我无法理解他们是如何比较距离的,比如选择5和3。不,真的,举个例子。在网格上画一条水平线,三步长。垂直线:在水平线的起点1步高。然后在右边的台阶上有一个5步高的台阶。然后在四步高的地方,往右边走一步,最后在水平线的尽头走三步高。有六个可能的“容器”,你可以用它来形成,每个容器都有一个非常明显的宽度,并且能够容纳非常明显数量的1步x 1步矩形。