Odd Even Linked List — Two Chain In-Place

Sanjeev SharmaSanjeev Sharma
1 min read

Advertisement

Problem 218 · Odd Even Linked List

Difficulty: Medium · Pattern: Two-Chain In-Place

Solutions

# Python
def oddEvenList(head):
    if not head: return head
    odd = head
    even = even_head = head.next
    while even and even.next:
        odd.next = even.next
        odd = odd.next
        even.next = odd.next
        even = even.next
    odd.next = even_head
    return head
// Java
public ListNode oddEvenList(ListNode head) {
    if (head == null) return head;
    ListNode odd = head, even = head.next, evenHead = even;
    while (even != null && even.next != null) {
        odd.next = even.next; odd = odd.next;
        even.next = odd.next; even = even.next;
    }
    odd.next = evenHead;
    return head;
}
// C++
ListNode* oddEvenList(ListNode* head) {
    if (!head) return head;
    ListNode *odd=head, *even=head->next, *evenHead=even;
    while (even && even->next) {
        odd->next=even->next; odd=odd->next;
        even->next=odd->next; even=even->next;
    }
    odd->next=evenHead;
    return head;
}

Complexity

  • Time: O(n)
  • Space: O(1)

Advertisement

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro