O(n)中数组元素相乘的算法



我需要一个算法,它将在O(n)算术运算中计算数组元素的乘积。

设a1,a2,a3…an为整数序列。需要一个算法来计算

∑_(1≤i<j≤n)aiaj

ai和aj的乘积的总和,使得1<=i<j<=n

所需的复杂性为O(n)。

有人能帮我吗?

谢谢!

我们在这里使用两个整数。以下公式的基础:

(a1 + a2) ^ 2 = a1^2 + a2^2 + 2*a1*a2
a1*a2 = ((a1 + a2)^2 - a1^2 - a2^2)/2.

相应的复数为:O(n)+O(1)+O。

注:(a1 + a2)^2的第一项缺少(a1 + a2 + ... + an)^2

最新更新