【发布时间】:2012-08-26 06:56:02
【问题描述】:
从整数数组A[N],我想找到一个区间[i,j],它的平均值为(A[i] + A[i + 1] + .. + A[j]) / (j - i + 1)。
区间(j - i + 1)的长度应该大于L.(L >= 1)
我以为是对每一个i~j计算一个平均值,但是这样做太慢了。(N太大了)
有比O(N^2) 更快的算法吗?或者我想知道是否存在一种随机方法。
【问题讨论】:
-
你能发一个简短的例子吗?
-
你需要 L >= 2,对于 L >= 1,你可以只返回 [i,i] 其中 i 是最大索引
-
@barak1412:我相信他的意思是
L是动态给算法的参数。 -
我不是这么理解的。他最好举个例子
-
Goldwasser 等人报告了一种 O(N) 算法。在arxiv.org/abs/cs/0207026。您可以下载该论文的 pdf。你也可以在这里找到一个 O(N*logL) 的:csie.ntu.edu.tw/~kmchao/seq04spr/jcss.pdf
标签: algorithm