Odd Even Linked List — Two Chain In-Place
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