0328. Odd Even Linked List
Last updated
Last updated
**Input:** head = [1,2,3,4,5]
**Output:** [1,3,5,2,4]**Input:** head = [2,1,3,5,6,4,7]
**Output:** [2,3,6,7,1,5,4]/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode oddEvenList(ListNode head) {
// edge cases
if (head == null || head.next == null) return head;
// pointers
ListNode oh = head, ot = head, eh = head.next, et = head.next, r = head.next.next;
et.next = null; // break list
boolean odd = true;
while (r != null) {
ListNode tmp = r;
r = r.next;
if (odd) { // if odd
ot.next = tmp;
tmp.next = eh;
ot = ot.next;
} else { // even
et.next = tmp;
tmp.next = null;
et = et.next;
}
odd = !odd;
}
return head;
}
}
/*
even head, even tail
odd head, odd tail
ranger
odd = true / false;
*/