我需要一个算法来计算O(n)算术运算中数组元素的乘法。
设a1,a2,a3 ......为整数序列。需要算法来计算
Σ_(1≤i ai和aj的乘积的总和使得1 <1。 = i&lt; j&lt; = n 所需的复杂性为O(n)。 任何人都可以帮我吗? 谢谢!
答案 0 :(得分:1)
我们在这里使用两个整数。 以下公式的基础:
(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(n)+ O(1)= O(n)。
注意:(a1 + a2)^2
的第一项不足(a1 + a2 + ... + an)^2
。