328. Odd Even Linked List

class Solution:
   def oddEvenList(self, head):
    odds = ListNode(0)
    evens = ListNode(0)
    oddsHead = odds
    evensHead = evens
    isOdd = True
    while head:
        if isOdd:
            odds.next = head
            odds = odds.next
        else:
            evens.next = head
            evens = evens.next
        isOdd = not isOdd
        head = head.next
    evens.next = None
    odds.next = evensHead.next
    return oddsHead.next 
  • keep an even and odd linked-list.
  • alternate our isOdd counter, and add to either the odd or even linked list.
  • at the end, set the next pointer of even list to be None, and the next pointer of the odd linked list to be the head of the even linked list.