Учитывая заголовок односвязного списка, сгруппируйте все узлы с нечетными индексами вместе, за которыми следуют узлы с четными индексами, и верните переупорядоченный список.
Вот мой код:
Код: Выделить всё
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def oddEvenList(self, head: Optional[ListNode]) -> Optional[ListNode]:
node = head
odd = True
lastOdd = None
while node:
temp = node.next
if node.next:
if node.next.next:
node.next = node.next.next
else:
if odd:
lastOdd = node
else:
if odd:
lastOdd = node
break
node = temp
odd = not(odd)
lastOdd.next = head.next
return head
Я относительно уверен, что тупиковая ситуация возникает со следующей частью, поскольку удаление этой части позволит программа для завершения:
Код: Выделить всё
else:
if odd:
lastOdd = node
Код: Выделить всё
else:
if odd:
node.next = head.next
< /code>
Но почему это Deadloop? Я уже использовал Temp
Любая помощь ценится! Я только начинаю узнавать о связанных списках, так что это может быть действительно глупым.
Подробнее здесь: https://stackoverflow.com/questions/793 ... etcode-328