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

Arrays 如何有效地解决这个问题?,arrays,algorithm,time-complexity,Arrays,Algorithm,Time Complexity,我有两个阵列: 得分[n] pos[n],其中n前面有一个类似的问题。看 @Gribouillis提供了一个很好的算法,它具有O(nlogn)复杂性,包括排序和使用平衡的二进制搜索树。寻找完整的答案 实现已作为一项练习进行。前面有一个类似的问题。看 @Gribouillis提供了一个很好的算法,它具有O(nlogn)复杂性,包括排序和使用平衡的二进制搜索树。寻找完整的答案 实现只是一个练习。能否提供一个或多个代码片段以更好地理解上下文?函数f在i和j中是对称的,即f(i,j)=f(j,i),因此

我有两个阵列:

  • 得分[n]


  • pos[n]
    ,其中n前面有一个类似的问题。看

    @Gribouillis提供了一个很好的算法,它具有
    O(nlogn)
    复杂性,包括排序和使用平衡的二进制搜索树。寻找完整的答案


    实现已作为一项练习进行。

    前面有一个类似的问题。看

    @Gribouillis提供了一个很好的算法,它具有
    O(nlogn)
    复杂性,包括排序和使用平衡的二进制搜索树。寻找完整的答案


    实现只是一个练习。

    能否提供一个或多个代码片段以更好地理解上下文?函数f在i和j中是对称的,即f(i,j)=f(j,i),因此一个简单的优化就是只计算一个三角形,然后将结果加倍。仍然是O(n^2),但只有一半的努力。我已经考虑过提供你的代码,那么这个问题属于堆栈交换网络中的另一个站点:我添加了CodeOne链接。你可以提供一个或多个代码片段以获得更好的上下文吗?你的函数f在I和j中是对称的,即f(I,j)=f(j,I)所以一个简单的优化就是只计算一个三角形,然后将结果加倍。仍然是O(n^2),但只做了一半的努力。我已经考虑过提供您的代码,那么这个问题属于堆栈交换网络中的另一个站点:我添加了代码的ideone链接
    f(i,j) = abs(pos[i]-pos[j])*max(score[i],score[j])