【发布时间】:2011-02-03 02:34:01
【问题描述】:
Given:实数数组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 是矩阵)。
【问题讨论】:
-
你的符号很好,简洁,但如果你用英语解释事情可能会更有用(你可能会得到更多的答案)。
-
诺亚:谢谢!!我试着用更少的符号来写标题,但是当我把它呈现给坐在我旁边的两个人时,他们不喜欢它。我能想到的最好的方法是“在数组的每个元素处,找到最近的更高值的数组元素”。 Paul R:这实际上是我正在从事的一个更大项目的一小部分,这不是家庭作业。但你是对的,它看起来确实像家庭作业。
标签: distance euclidean-distance