Нужно вернуть две последовательные копии исходного списка. Для списка целых чисел достаточно 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). Пустой список даёт пустой результат. Копируются ссылки на элементы, но для неизменяемых целых чисел это безопасно. Если бы элементами были вложенные изменяемые объекты, обе половины ссылались бы на одни и те же объекты; это не глубокое копирование.