We have to keep index i
tracking the node values if i
is odd then put them in a different say odd
, else put them in a list say even
.
At the end connect the last node of the odd list to head of even
list
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode oddEvenList(ListNode head) {
ListNode odd = new ListNode(0);
ListNode even = new ListNode(0);
ListNode pointerOfOdd = odd;
ListNode pointerOfEven = even;
int i =1;
while(head!=null){
if(i%2!=0){
odd.next = new ListNode(head.val);
odd = odd.next;
}
else{
even.next = new ListNode(head.val);
even = even.next;
}
i++;
head = head.next;
}
odd.next = pointerOfEven.next;
return pointerOfOdd.next;
}
}
Top comments (0)