2

我试图找到一条线与抛物线数组的交点的最高值(我正在实现一条财富线,这是一个现场事件)。

我注意到当我接近最大值(我正在寻找的那个)时,这些值往往会变得更大,然后又变得更小,就好像它们已经被排序一样。一个例子是这样的:(
[f(a) = -3, f(b) = -1, f(c) = 4, f(d) = 18, f(e) = 67, f(f) = 34, f(g) = 8, f(h) = -7]
67 是我需要得到的值)。

由于计算交点不如读取数组的值那么快,我想知道是否有更快的方法来获得最大值而无需迭代所有抛物线。

由于 voronoï 图很大,因此抛物线阵列预计平均在 10k 到 20k 个元素之间。最大值可以是数组中的任何位置。

4

1 回答 1

2

一个先增后减或先减后增的序列称为双调序列。您可以在 O(log n) 中找到最大/最小点,这是一个示例实现的链接。事实上,一旦你找到了这一点,你就可以使用二分搜索找到 O(log n) 中的任何元素。

于 2019-05-11T10:28:42.523 回答