如何有效地解决这个问题?

时间:2016-12-18 16:15:59

标签: arrays algorithm time-complexity

我有两个数组:

  1. score[n]

  2. pos[n],其中n <= 10 ^ 5; pos [i],得分[i]&lt; = 10 ^ 4

  3. 定义:

    f(i,j) = abs(pos[i]-pos[j])*max(score[i],score[j])
    

    我需要为所有f(i,j)找到i,j的总和 我有一个算法可以在O(n^2)解决它,但我想优化。
    我花了很多时间但不能。

    感谢任何帮助。 最坏的案例代码 http://ideone.com/q4qSNh

1 个答案:

答案 0 :(得分:0)

之前有一个类似的问题。请参阅here

@Gribouillis提供了一个很好的算法,其复杂度O(nlogn),包括排序和使用平衡二叉搜索树。查看here以获得完整答案

实施仍然是一项练习。