鉴于:实数的数组A[1..n]
。对于每个元素A [i]于阵列A的,找到最接近Ĵ使得A [J]> A [I]
目标:数组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]
不是本地最大值。我一直在想很多,并没有提出什么。我希望最终扩展到2D(所以A
和D
是矩阵)。
你的符号很好很简洁,但如果你用英文解释的话,它可能会更有用(你可能会得到更多的答案)。 – noah 2010-03-31 20:08:24
需要'家庭作业'标签? – 2010-03-31 21:08:31
noah:谢谢!我试图用较少的符号来书写标题,但是当我将它呈现给坐在我旁边的两个人时,他们不喜欢它。我能想到的最好的结果是“在数组的每个元素上,找到最接近数组的元素。” Paul R:这实际上是我正在研究的一个更大项目中的一小部分,这不是作业。但你是对的,它看起来像功课。 – SamH 2010-03-31 21:32:04