【发布时间】:2017-06-03 03:05:21
【问题描述】:
我想要优化算法来找到数组中每个元素的总和。
例如让 3 个数组:
a = [1,2,3,4];
b = [5,6];
c = [8,9];
那么最终总和将等于:
sum(1,5,8)+sum(1,5,9)+sum(1,6,8)+sum(1,6,9)+sum(2,5,8)...+sum(4,6,9)
我尝试过,但我使用的算法的时间复杂度为 O(n^3),所以我想要任何低于这个复杂度的算法。
这是我的算法:
sum = 0
for(i=0;i<a.size();i++)
for(j=0;j<b.size();j++)
for(k=0;k<c.size();k++)
sum = sum+a[i]+b[j]+c[k];
【问题讨论】:
-
你尝试了什么?
-
我不确定您要做什么。如果您正在尝试做我认为的事情,那是阶乘时间算法。编辑您的问题。
-
这也不是二维数组。
-
@Makogan:提出的算法有多个输入大小。简单地说三次或阶乘时间是没有意义的,因为有 3 个数组,每个数组的大小都是任意的。复杂度是它们大小的乘积(可以通过嵌套for循环的方式来推断)