解题思路
设置两个链表头,一个串接单数节点,一个串接双数节点。
最后将两个链表的数据连接起来。
时间复杂度为O(n),是原始链表的长度
空间复杂度为O(1),用于保存两个新创建的链表头。
代码
class Solution {
public ListNode oddEvenList(ListNode head) {
ListNode trueHead = new ListNode(-1);
ListNode dummyHead = new ListNode(-1);
ListNode p = head, p1=trueHead, p2=dummyHead;
while(p!=null) {
p1.next = p;
p2.next=p.next;
p1=p1.next;
p2=p2.next;
p=p.next;
if(p!=null) p=p.next;
}
if(p2!=null) p2.next=null;
p1.next=dummyHead.next;
return trueHead.next;
}
}