给定:A[1..n]
实数数组。
目标:一个数组D[1..n]
,使得
D[i] = min{ distance(i,j) : A[j] > A[i] }
或者当没有更高值的元素时使用一些默认值(如 0)。我真的很想在这里使用欧几里得距离。
示例:
A = [-1.35, 3.03, 0.73, -0.06, 0.71, -0.21, -0.12, 1.49, 1.41, 1.42]
D = [1, 0, 1, 1, 2, 1, 1, 6, 1, 2]
有什么办法可以打败明显的 O( n
^2) 解决方案?到目前为止,我取得的唯一进展是D[i] = 1
无论何时A[i]
都不是局部最大值。我一直在想很多,并没有想出任何东西。我希望最终将其扩展到二维(矩阵也是如此)A
。D