【发布时间】:2019-04-18 01:22:48
【问题描述】:
我想在最小的大 O 中找到不同对的乘积之和。
列表 = [3 , 2, 1 , 7, 9]
所以不同的对将是 - (3,2) , (3,1) (3, 7), (3, 9) , (2, 1) , (2, 7), (2, 9) , (1, 7) , (1, 9) , (7, 9)。
注意 - (2,3) 与 (3,2) 相同。
我在做什么:
List = [3 , 2, 1 , 7, 9]
int result = 0;
for (int inner = 0; inner < list.size()-1; inner ++){
for(int outer = inner+1; outer < list.size(); outer++){
result+= list[inner] * list[outer];
}
}
它将在 O(n^2) 中运行。
我想知道是否有任何更好的解决方案,它的运行时间比 O(n^2) 更短。
谢谢。
编辑 - 不同对的总和 -> 不同对的乘积总和
【问题讨论】:
-
更具体地说,您正在寻找最小O中两个坐标的乘积之和;这是正确的吗?
-
我的错,是的!产品总和。
标签: java algorithm list data-structures graph-algorithm