Чтобы повернуть список на k позиций вправо, мы берём последние k элементов и перемещаем их в начало, затем добавляем оставшиеся элементы после них.
def rotate_list(lst, k):
k = k % len(lst)
return lst[-k:] + lst[:-k]
k % len(lst) — это обрабатывает случаи, когда k больше длины списка, избегая лишних полных ротацийlst[-k:] — берёт последние k элементов, которые становятся началом нового спискаlst[:-k] — берёт всё перед последними k элементами, что становится новым хвостомДля lst = [1, 2, 3, 4, 5] и k = 2:
lst[-2:] → [4, 5]lst[:-2] → [1, 2, 3][4, 5, 1, 2, 3]O(n) — из-за нарезки списка и конкатенацииO(n) — создаётся новый списокОперация модуля k % len(lst) критически важна, потому что поворот списка на его полную длину возвращает его в исходное состояние, делая большие значения k эквивалентными меньшим.
Новый — ещё не проверен сообществом
Вы