有人能给我解释一下为什么这段代码的O(N*N)复杂性吗?我看不到它。Bellow是我针对这个Codility问题编写的python代码:
给出了由N个整数组成的非空数组A.数组A表示磁带上的数字。任何整数P,如0这两部分的区别是:x(A+ A1 +.+ AP−1)−(AP + AP +1+.+ AN−1),即第一部分和和与第二部分之和之间的绝对差。例如,假设数组A这样:a=3 A1 =1 A2 =2 A3 =4 A4 =3我们可以将该磁带分成四个部分: P= 1,差分=0=1,差分=0= 2,差分=0=2,差分= 4,差分=6−7=1 P=4,差分=0 0−3 =7写函数: def解(A),给定N个整数的非空数组A,返回可以达到的最小差。
我的Python代码
def solution(A):
sum_array = []
for i in range(1, len(A)):
sum_array.append(abs(sum(A) - 2*sum(A[i:N])))
return min(sum_array)发布于 2020-01-26 14:04:15
计算阵列和的时间复杂度为O(N)。这是因为您需要访问每个数组元素。由于有一个N的循环,每次迭代都执行和(A),所以程序的时间复杂度是O(N*N)。
https://stackoverflow.com/questions/59544534
复制相似问题