标签: arrays algorithm time-complexity
我有两个数组:
score[n]
pos[n],其中n <= 10 ^ 5; pos [i],得分[i]&lt; = 10 ^ 4
pos[n]
定义:
f(i,j) = abs(pos[i]-pos[j])*max(score[i],score[j])
我需要为所有f(i,j)找到i,j的总和 我有一个算法可以在O(n^2)解决它,但我想优化。 我花了很多时间但不能。
f(i,j)
i,j
O(n^2)
感谢任何帮助。 最坏的案例代码 http://ideone.com/q4qSNh
答案 0 :(得分:0)
之前有一个类似的问题。请参阅here。
@Gribouillis提供了一个很好的算法,其复杂度O(nlogn),包括排序和使用平衡二叉搜索树。查看here以获得完整答案
O(nlogn)
实施仍然是一项练习。