# CSPT10 Build Week 3 ## [Interleave Lists](https://leetcode.com/problems/odd-even-linked-list) ``` """ Understand: Empty list Odd number list Input: 1->2->3 Output: 1->3->2 Even number list Input: 1->2->3->4 Output: 1->3->2->4 Plan: Use dummy-head to create two lists with even and odd elements Append even list to end of odd list """ # 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: ListNode) -> ListNode: if head == None: return None oddDummyHead = ListNode(-1) oddCurr = oddDummyHead evenDummyHead = ListNode(-1) evenCurr = evenDummyHead counter = 1 curr = head while curr != None: if counter % 2 == 0: evenCurr.next = curr evenCurr = evenCurr.next else: oddCurr.next = curr oddCurr = oddCurr.next counter += 1 temp = curr.next curr.next = None curr = temp oddCurr.next = evenDummyHead.next return oddDummyHead.next ```