Разбор задачи: Декомпрессионный список закодированных длин пробега

Предложенный нами код решения:

 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 = []
  1. Инициализация пустого списка:
    Создаем пустой список decompressed_list, в который будем добавлять элементы разжатого списка.

    for i in range(0, len(nums), 2):
        freq = nums[i]
        val = nums[i + 1]
  1. Обход списка парами:
    Используем цикл for, чтобы проходить по списку nums с шагом 2. На каждой итерации:
    • freq (частота) задается как элемент на текущей позиции i.
    • val (значение) задается как следующий элемент на позиции i + 1.

        decompressed_list.extend([val] * freq)
  1. Добавление элементов в список:
    Для каждой пары [freq, val] создаем подсписок, состоящий из freq элементов со значением val. Это достигается путем умножения списка [val] на freq.
    Например, если freq = 3 и val = 4, выражение [val] * freq вернет [4, 4, 4].
    Затем этот подсписок добавляется к decompressed_list с использованием метода extend.

    return decompressed_list
  1. Возврат результата:
    После завершения цикла функция возвращает полный разжатый список 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].

 



Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии