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