我需要一个算法,它将在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
。