【发布时间】:2020-03-03 16:24:31
【问题描述】:
给定一个数组,求每对整数的绝对差的乘积。
例如:给定 a[]= {2,3, 5, 7 };
输出将是 (3-2) * (5-2) * (7-2) * (5-3) * (7-3) * (7-5) = 240 .
能比 O(n^2) 做得更好吗? 编辑: 所有元素都是不同的。
【问题讨论】:
-
似乎不太可能,因为因子本身的数量是 O(n^2)... 除非该表达式存在一些疯狂的重新表述。
-
我使用两个循环编写了代码。其中外循环从 0 到 n-2,内循环从 1 到 n-1。我保留一个变量乘积来跟踪元素的当前乘积——在其中我找到元素 [i] 和元素 [j] 的绝对差并将其乘以乘积变量。循环结束后,我打印产品变量。
-
@ManojBanik 我认为没有必要质疑我的代码。因为它不会比 O(n^2) 更好地考虑解决方案。既然我已经提到我的代码复杂度为 O(n^2),那么很清楚我使用了什么方法。
-
注意:这显然与范德蒙德矩阵的行列式有关。但我看不出如何使用它来获得更快的计算。
标签: algorithm