__init__(self, val=0, next=None):
self.val = val
self.next = next
Я сделал такое
class Solution:
def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
self.nodes = []
for item in lists:
while item:
self.nodes.append(item.val)
item = item.next
point = ListNode(0)
head = ListNode(0)
head.next = point
for el in sorted(self.nodes):
point.next = ListNode(el)
point = point.next
return head.next.next
В ответах - такое
class Solution(object):
def mergeKLists(self, lists):
self.nodes = []
head = point = ListNode(0)
for l in lists:
while l:
self.nodes.append(l.val)
l = l.next
for x in sorted(self.nodes):
point.next = ListNode(x)
point = point.next
return head.next
Можете объяснить строчку head = point = ListNode(0) ?
> Можете объяснить строчку head = point = ListNode(0) ? тоже самое что и: head = ListNode(0) point = ListNode(0)
Первый узел односвязного списка
for item in lists: while item: self.nodes.append(item.val) у вас код вряд ли работает как нужно, bool(item) это True, получается while True тут
И если это задачи с литкод, типа вставить или удалить значения, то нельзя использовать встроенные функции (например append)
Последний блок кода - это ответ самого литкод
Не то же самое. В первом случае гарантировано к именам привяжется один и тот же объект. Во втором такой гарантии нет.
я коментировал конкретный кусок кода, а не какой-то абстрактный
В том конкретном куске кода это не то же самое.
не "гарантии нет", а именно что разные
А, то есть в head = point = ListNode(0) -каждая переменная ссылается на один ListNode(0) однако, почему тогда становится head.next - это point
Да нет. Есть синглтоны, есть интернированные объекты и проч.
из описания класса очевидно, что это не тот случай.
Я не понял ваш вопрос
я разобрался, спасибо)
Обсуждают сегодня