gpt4 book ai didi

数组包含区域的 Python 算法(图)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:44 24 4
gpt4 key购买 nike

<分区>

设置:

可视化大量数字,其中每个数字代表条形图上条形的高度。

例如:[5, 4, 3, 7, 2, 3, 1, 12]






█ █
█ █
█ █ █
██ █ █
████ █ █
██████ █
████████

分析:

这是前面数字的条形图。我需要找到的是图表中包含的区域,以开放(或未填充)单元的数量表示。

解决方案(Pt.1):

为此,我制定了一个算法来计算阵列中的所有峰值。

这将返回:[5, 7, 3, 12] 以及另一个包含每个条目索引的列表,[0,3,5,7]

对我们来说,只有三个重要的山峰可以找到该区域。 5712。然后我们可以像这样分解它。

5 和 7 之间的开放区域量是(一般规则):

(([Index Of Larger] - [Index Of Smaller] - [1])*[SmallerValue]) - [Values Of All In B/W]

所以第一部分的面积将是 (2*5) - (4+3)10-73 .这是有道理的,因为如果您查看图表,您会发现有一个空的 L 形部分,您可以容纳 3 个单位的水,而不会溢出。如果对第二部分重复此操作,您也会得到正确的区域。

我的问题是开发一种从 ALL PEAKSIMPORTANT PEAKS 的算法。

误导性:

在这种情况下,很容易看出如何做到这一点。您只需编写一个算法来发现 3 小于 712 所以去掉它并返回一个改进的版本山峰。

然而,事情并不总是那么简单。

更难的例子:

我有一个数组:

[5, 4, 3, 7, 2, 3, 1, 12, 9, 10, 5, 3, 6, 8, 5, 6, 4, 7, 6, 9, 4, 11 , 11, 4, 1, 2, 1]

通过基本的自定义峰值查找算法运行它 O(N) 它返回:

[5, 7, 3, 12, 10, 8, 6, 7, 9, 11, 11, 4, 2]

在这个例子中,我们在这个问题的第一部分看到了同样的问题,但是,在这个峰值列表中的 12 之后,人们可以很容易地看到下一个最重要的峰值这是两个 1142。所以我需要一种方法:

[5, 7, 3, 12, 10, 8, 6, 7, 9, 11, 11, 4, 2]

收件人:

[5, 7, 12, 11, 11, 4, 2]

上面的数组是一个“重要”峰值的列表,这些峰值是找到该区域所必需的,并且再次将开放 block 可视化,就好像它们包含水或其他东西一样,以便它们在溢出之前被限制在最低的直接峰值。

为了更好地可视化这个更完整的第二个示例,我有一张图表及其所有峰值和数据点的图片 here .

谢谢。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com