algorithm - 求数组中每对整数的绝对差之和

标签 algorithm

给定一个数组,求每对整数的绝对差之和。

例如:给定 a[]= {2,3, 5, 7 };

输出将是 (3-2) + (5-2) + (7-2) + (5-3) + (7-3) + (7-5) = 17 .

它必须比 O(n^2) 做得更好。

原始数组不一定是有序的。

最佳答案

请注意,您恰好将每个数字相加 k 次(如果您对列表进行排序,其中 k 是它的位置)
此外,您将每个数字减去 n-1-k 次
您可以对列表进行排序 (O(nlogn)),然后遍历排序后的数组,如上所述将每个元素相乘。

关于algorithm - 求数组中每对整数的绝对差之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5855066/

相关文章:

java - 如何有效地监控远程位置的变化?

c++ - 无法使用辅助链表合并排序链表

algorithm - 最长递增子序列——线性时间解?

java - 如何优化我当前的 getMax 方法以检索数组中的最大值?

algorithm - 证明决策概率在 NP 中

c# - 如何从 O(1) 中匹配特定条件的数组中选择随机元素

linux - EDF算法的替代方案

c - 使用 C 中的队列评估前缀操作

c - 在未排序的数组中找到差值为输入值 'k' 的一对数字

c++ - 使用后缀自动机的最长公共(public)子串