Программа курса:
Разбор задачи: Декомпрессионный список закодированных длин пробега
Предложенный нами код решения:
def decompressRLElist(nums):
"""
Распаковывает список, сжатый с использованием кодирования длин серий (Run-Length Encoding).
:param nums: список целых чисел, представляющий сжатый список
:return: разжатый список
"""
decompressed_list = []
for i in range(0, len(nums), 2):
freq = nums[i]
val = nums[i + 1]
decompressed_list.extend([val] * freq)
return decompressed_listПодробное объяснение решения
def decompressRLElist(nums):
"""
Распаковывает список, сжатый с использованием кодирования длин серий (Run-Length Encoding).
:param nums: список целых чисел, представляющий сжатый список
:return: разжатый список
"""
decompressed_list = []
- Инициализация пустого списка:
Создаем пустой списокdecompressed_list, в который будем добавлять элементы разжатого списка.
for i in range(0, len(nums), 2):
freq = nums[i]
val = nums[i + 1]
- Обход списка парами:
Используем циклfor, чтобы проходить по спискуnumsс шагом 2. На каждой итерации:freq(частота) задается как элемент на текущей позицииi.val(значение) задается как следующий элемент на позицииi + 1.
decompressed_list.extend([val] * freq)
- Добавление элементов в список:
Для каждой пары[freq, val]создаем подсписок, состоящий изfreqэлементов со значениемval. Это достигается путем умножения списка[val]наfreq.
Например, еслиfreq = 3иval = 4, выражение[val] * freqвернет[4, 4, 4].
Затем этот подсписок добавляется кdecompressed_listс использованием методаextend.
return decompressed_list
- Возврат результата:
После завершения цикла функция возвращает полный разжатый списокdecompressed_list.
Пример работы функции
Пример 1:
Вход: nums = [1, 2, 3, 4]
- Первая пара
[1, 2]: создаем список[2]и добавляем его. - Вторая пара
[3, 4]: создаем список[4, 4, 4]и добавляем его.
Выход:[2, 4, 4, 4].
Пример 2:
Вход: nums = [1, 1, 2, 3]
- Первая пара
[1, 1]: создаем список[1]и добавляем его. - Вторая пара
[2, 3]: создаем список[3, 3]и добавляем его.
Выход:[1, 3, 3].
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии