Тёмный

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

Леонид Мурзинов
Подписаться 418
Просмотров 553
50% 1

Опубликовано:

 

1 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 9   
@anaken127
@anaken127 6 месяцев назад
вот смотрите: в 13 строчке мы должны добавить к узлу новое значение, и делается это вот так: tail.next=list2, по логике вещей, должен присвоиться весь список, а добавляется онли значение (насколько я понимаю, если присваивать значение, то это должно выглядеть так: tail.next=list2.val, но так не работает), но это же правило не работает в строчке 21, когда мы в конец присваиваем остаток списка таким же способом. Пожалуйста, объясните недалекому(мне) этот момент
@leonid_murzinov
@leonid_murzinov 6 месяцев назад
Строка 21: Да, в строке 21 мы добавляем весь оставшийся список (list1 или list2) к нашему сформированному списку. Поскольку один из списков уже полностью пройден, мы просто прикрепляем остаток другого списка к текущему концу объединенного списка (tail). Поскольку список уже упорядочен, нет необходимости проходить по каждому его узлу - мы просто устанавливаем ссылку. Строка 13: Здесь мы выбираем меньший узел из двух списков (либо из list1, либо из list2) и добавляем его к объединенному списку. Важный момент заключается в том, что после добавления узла, мы продвигаемся дальше по списку, из которого был взят этот узел (перемещаем list1 или list2 на следующий узел). Таким образом, мы не добавляем весь остаток списка сразу, а лишь один узел из него. После этого, мы перемещаем tail на tail.next, чтобы в следующей итерации добавлять узлы уже к следующему элементу объединенного списка. Таким образом в результате, мы получается добавим как бы одну ноду. Таким образом, в обоих случаях происходит добавление узлов, но в строчке 13 мы добавляем один узел и продвигаемся дальше по списку, из которого этот узел был взят, тогда как в строчке 21 мы добавляем оставшуюся часть списка целиком.
@leonid_murzinov
@leonid_murzinov 6 месяцев назад
tail.next = list2.val нельзя использовать потому что tail.next должен ссылаться на узел (объект ListNode), а не на отдельное значение (например, число). В связанных списках каждый узел (ListNode) содержит два элемента: val (значение узла) и next (ссылку на следующий узел в списке). Когда вы присваиваете tail.next = list2, вы устанавливаете ссылку на следующий узел. Если же вы попытаетесь сделать tail.next = list2.val, то это попытка установить ссылку на простое число или значение, что нарушает структуру связанного списка.
@bmstu_iu7
@bmstu_iu7 Год назад
Как всегда легенда
@aleksandrzhukov3788
@aleksandrzhukov3788 Год назад
музыка сегодня то что надо👍
@УльянаБаканова-ц9е
А видео по покеру будет?
@leonid_murzinov
@leonid_murzinov Год назад
Если этот видос соберёт 1к лайков, открываю курс по покеру закрытый
@АндрейТарев-т7б
@АндрейТарев-т7б 8 месяцев назад
Нахера эта музыка?!
@leonid_murzinov
@leonid_murzinov 8 месяцев назад
Чтобы веселее было задачи решать
Далее
Циклы, что как и почему
45:27
The Midpoint Circle Algorithm Explained Step by Step
13:33