O (п)?Возможно, если у вас была бесконечная память со всеми возможными подмассивами в реальной / мнимой системе счисления, сохраненными для эффективного доступа, тогда, конечно, вы можете иметь любой алгоритм сложности, который вам нравится.
... Но, на самом деле, вы смотрите на что-то по линии O (n ^ 3), независимо от того, насколько эффективно вы это делаете.
>>> [lst[i:j + 1] for i in range(len(lst)) for j in range(i + 1, len(lst))]
[[1, 2], [1, 2, 3], [1, 2, 3, 4], [2, 3], [2, 3, 4], [3, 4]]
Один вкладышскрывает два цикла и операцию нарезки, каждый из которых добавляет уровни сложности.Тем не менее, он равен эффективному и быстрому , как позволяет базовый алгоритм.