KSum如何具有O(N ^ k-1)的最小运行时间?

时间:2017-08-12 05:58:44

标签: algorithm

在KSum问题中,例如在3Sum问题中,有一种方法首先对数组进行排序,然后选择第一个数字。接下来是为数组的其余部分执行2Sum,从而产生O(N ^ 2)的总运行时间。但我觉得很难理解。由于我们必须做2Sum大约N-2次,所以总运行时间仍应为O(N ^ 3)。请赐教。

1 个答案:

答案 0 :(得分:2)

假设 T(n,k)表示为大小为n的排序数组计算Ksum问题所需的时间复杂度。基本案例是

T(n, 1) = n
T(n, 2) = n

现在对于每个其他k,我们必须循环一次通过数组并检查k-1总和是否可以来自其他元素所以

T(n, 3) = n*T(n, 2)
T(n, 4) = n*T(n, 3)
....
T(n, k) = n*T(n, k-1)

因此,对于k> 2,时间复杂度将是

  

为O(n ^(K-1))