Если вам нужно добавить все числа от A[0]
до A[i]
в каждой итерации , то это O(n^2)
сложность. Например, в Python:
# O(n^2) solution
a = [2, 3, 5, 7, 1, 9, 8]
b = []
for i in range(len(a)):
sum = 0
for j in range(i+1):
sum += a[j]
b.append(sum)
Чтобы сделать это O(n)
, вы можете рассчитать текущую сумму, используя предыдущие результаты, например:
# O(n) solution
a = [2, 3, 5, 7, 1, 9, 8]
b = [a[0]]
for i in range(1, len(a)):
sum = b[i-1] + a[i]
b.append(sum)
Результат будет одинаковым в обоих случаях, но вторая версия будет иметь O(n)
сложность:
b
=> [2, 5, 10, 17, 18, 27, 35]