这个问题基本上是一个算法优化问题。
我们有一个包含n个元素的列表。例如{n1,n2,n3...nk}
这个列表是排序的,我们必须找出数字ni
n1<=ni<=nk
ni
与每个数字的距离之和最小。可能有(nk-n1+1)
个可能的数字,但我们的目标是找出ni
的数字n1
最接近所有其他数字。
蛮力逼近可以通过O(n^2)
迭代到nk并计算距离之和
从所有列表号码。通过这种方式,我们可以很容易地找出最接近列表中所有其他数字的数字。
但这种方法存在的问题是,它在时间复杂度方面并不好。这种方法的时间复杂度为{{1}}。
我认为有更好的方法可以用更少的时间来解决这个问题 复杂。
任何方法都将受到赞赏。
答案 0 :(得分:6)
如果“距离”是指distance(a,b) = abs(a-b)
,那么您只需找到中位数。
在排序列表中查找中位数是O(1)。
答案 1 :(得分:1)
答案应该是ROUND(SUM(n1,...,nk)/ k)。
答案 2 :(得分:0)
找到平均值...这需要O(n)。 然后浏览列表找到ni的平均值(也需要O(n))...实际上更像是o(1 / 2n)