我有一个名为x
的二维数组。我想尽可能快地计算所有三元素组x[a][b] = x[a][c] = x[b][c]
。我不需要知道那些元素,我只需要这些元素的数量。
该数组的第一个维度的大小等于第二个维度的大小。
我知道蛮力解决方案,它的复杂度为O(n ^ 2),其中n是数组的大小。我想有一个更快的解决方案,但我不知道它是什么样的。
答案 0 :(得分:2)
除了暴力之外我什么也看不见。
在每一行中搜索一对,然后检查该对的x [b] [c]。
让数组为NxN
。将行的每个元素与行的每个其他元素进行比较需要
N choose 2 = N(N-1)/2 = O(N^2)
比较,您需要为所有N
行提供O(N^3)
。如果您的谈话总大小(M=N^2
)则为O(N^(3/2))
。
答案 1 :(得分:0)
我很确定蛮力解决方案是O(N ^ 3)
另一个解决方案(除了普通(0,0,0)之外)将使用其值作为键将每对放入哈希表中。然后在重复项中查找符合您标准的对。