我有一个一维数组A
,其中填充了整数(A[0]
至A[n]
)。我被问到设计一种线性算法,该算法可以生成一个二维数组B
,其中B[i][j] = A[i] + ... + A[j]
代表0 <= i < j <= n
。因此,这意味着我需要遍历对角线上方的所有元素,因此(n-1) x n x (1/2)
元素也是如此O(n^2)
。我通过以下方法开始了我的算法(伪代码):
for i=0 to n-1:
for j=i+1 to n:
// do calc
但是这已经是O(n^2)
了,线性时间甚至可能吗?
答案 0 :(得分:0)
当您要填充大小为n^2
的2D数组时,算法的时间复杂度为Omega(n^2)
。因此,在当前规范下无法在线性时间内运行该算法。