21. Merge Two Sorted Lists. Решаем Leetcode на Python под бодрый фонк

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024

Комментарии • 9

  • @bmstu_iu7
    @bmstu_iu7 Год назад +3

    Как всегда легенда

  • @anaken127
    @anaken127 7 месяцев назад +1

    вот смотрите: в 13 строчке мы должны добавить к узлу новое значение, и делается это вот так: tail.next=list2, по логике вещей, должен присвоиться весь список, а добавляется онли значение (насколько я понимаю, если присваивать значение, то это должно выглядеть так: tail.next=list2.val, но так не работает), но это же правило не работает в строчке 21, когда мы в конец присваиваем остаток списка таким же способом. Пожалуйста, объясните недалекому(мне) этот момент

    • @leonid_murzinov
      @leonid_murzinov  7 месяцев назад

      Строка 21: Да, в строке 21 мы добавляем весь оставшийся список (list1 или list2) к нашему сформированному списку. Поскольку один из списков уже полностью пройден, мы просто прикрепляем остаток другого списка к текущему концу объединенного списка (tail). Поскольку список уже упорядочен, нет необходимости проходить по каждому его узлу - мы просто устанавливаем ссылку.
      Строка 13: Здесь мы выбираем меньший узел из двух списков (либо из list1, либо из list2) и добавляем его к объединенному списку. Важный момент заключается в том, что после добавления узла, мы продвигаемся дальше по списку, из которого был взят этот узел (перемещаем list1 или list2 на следующий узел). Таким образом, мы не добавляем весь остаток списка сразу, а лишь один узел из него. После этого, мы перемещаем tail на tail.next, чтобы в следующей итерации добавлять узлы уже к следующему элементу объединенного списка. Таким образом в результате, мы получается добавим как бы одну ноду.
      Таким образом, в обоих случаях происходит добавление узлов, но в строчке 13 мы добавляем один узел и продвигаемся дальше по списку, из которого этот узел был взят, тогда как в строчке 21 мы добавляем оставшуюся часть списка целиком.

    • @leonid_murzinov
      @leonid_murzinov  7 месяцев назад

      tail.next = list2.val нельзя использовать потому что tail.next должен ссылаться на узел (объект ListNode), а не на отдельное значение (например, число). В связанных списках каждый узел (ListNode) содержит два элемента: val (значение узла) и next (ссылку на следующий узел в списке). Когда вы присваиваете tail.next = list2, вы устанавливаете ссылку на следующий узел. Если же вы попытаетесь сделать tail.next = list2.val, то это попытка установить ссылку на простое число или значение, что нарушает структуру связанного списка.

  • @aleksandrzhukov3788
    @aleksandrzhukov3788 Год назад

    музыка сегодня то что надо👍

  • @Shmon52.0
    @Shmon52.0 Год назад

    А видео по покеру будет?

    • @leonid_murzinov
      @leonid_murzinov  Год назад +1

      Если этот видос соберёт 1к лайков, открываю курс по покеру закрытый

  • @АндрейТарев-т7б
    @АндрейТарев-т7б 9 месяцев назад

    Нахера эта музыка?!

    • @leonid_murzinov
      @leonid_murzinov  9 месяцев назад +1

      Чтобы веселее было задачи решать