【发布时间】:2017-11-12 13:37:07
【问题描述】:
public class twoSumProblem {
public static int bruteForce(Integer[] a) {
int count = 0;
for (int i = 0; i < a.length; i++)
for (int j = i+1; j < a.length; j++) if (a[i] + a[j] == 0) count++;
return count;
}
我怎样才能为这段代码提出更好的算法?我也需要他们的运行时间复杂性。请帮帮我。
【问题讨论】:
-
如果你想修复一个算法,首先要了解它是如何工作的。用您自己理解的术语描述它计算的函数。
-
如果您能找到算法的复杂性,请将其添加到您的问题中。然后您将能够判断哪种算法更好。如果你不知道如何找出算法的复杂性,你可能需要一门超级快速的算法理论课程。
-
提示:一旦你知道
a[i],你就知道什么值会产生0的总和。您是否知道提供快速查找的数据结构,或重组数组以便快速检查其中是否包含某个值的方法?
标签: algorithm complexity-theory