LeetCode - The World's Leading Online Programming Learning Platform
head
), one for the even numbers (head.next
), and the third for the first even number (head.next
)when the list length is even (yellow pinter = odd; red pointer = even)
when the list length is odd
# 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]:
# len = 0
if head is None:
return None
# len = 1
if head.next is None:
return head
# len >= 2
odd = head
even = head.next
even_head = head.next
while odd and even:
if even.next is not None:
odd.next = even.next
odd = odd.next
else:
odd.next = even_head
break
if odd.next is not None:
even.next = odd.next
even = even.next
else:
even.next = None
odd.next = even_head
break
return head