Когда я читаю ответ на предыдущий вопрос ! при переполнении стека было сказано, что можно решить максимальный суммарный подсписок для O (n).
И я также написал код, вычислительная сложность которого была O (n ^ 2).
Тем не менее, я слышал, что существует алгоритм для определения максимального списка для O (n ^ 3).
Если вы это знаете, я был бы признателен, если бы вы поделились этим со мной.
Код для O (n)
def mssl(l):
best = cur = 0
for i in l:
cur = max(cur + i, 0)
best = max(best, cur)
return best
Код для O (n ^ 2)
def solution(A):
start = None
end = None
max_total = 0
for i in range(len(A)):
for j in range(i, len(A)):
tmp = sum(A[i:j+1])
if max_total < tmp:
max_total = tmp
start = i
end = j
return max_total, start, end
if __name__ == '__main__':
A = [18, -10, 30, 23, -26]
ans = solution(A)
print(ans)
Я хотел бы знать любой алгоритм для решения Максимального Сумма Подсписок для O (n ^ 3).