Дублирование элементов массива

Нужно вернуть две последовательные копии исходного списка. Для списка целых чисел достаточно values + values или values * 2: результат имеет длину 2n, исходный список не изменяется.

Короткий ответ

Что ответить на собеседовании

Нужно вернуть две последовательные копии исходного списка. Для списка целых чисел достаточно values + values или values * 2: результат имеет длину 2n, исходный список не изменяется.

Подробный разбор

Ответ с пояснениями

Условие

Дан массив целых чисел values длиной n. Требуется написать программу, которая формирует массив result длиной 2 n так, чтобы result[i] == values[i] и result[i + n] == values[i] для всех 0 ≤ i < n. Функция должна вернуть полученный массив result.

Пример 1: Ввод: values = [1,2,1] Вывод: [1,2,1,1,2,1]

Пример 2: Ввод: values = [1,3,2,1] Вывод: [1,3,2,1,1,3,2,1]

Ответ

Нужно вернуть две последовательные копии исходного списка. Для списка целых чисел достаточно values + values или values * 2: результат имеет длину 2n, исходный список не изменяется.

Пример:

def duplicate(values: list[int]) -> list[int]:
    return values + values

Время и память результата — O(n). Пустой список даёт пустой результат. Копируются ссылки на элементы, но для неизменяемых целых чисел это безопасно. Если бы элементами были вложенные изменяемые объекты, обе половины ссылались бы на одни и те же объекты; это не глубокое копирование.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее