解题思路
设置两个链表头,一个串接单数节点,一个串接双数节点。
最后将两个链表的数据连接起来。
时间复杂度为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;
}
}
运行结果

本文介绍了一种链表操作算法,通过串接单数和双数节点,实现链表的奇偶重组。该算法时间复杂度为O(n),空间复杂度为O(1)。适合于对链表进行高效数据重组的应用场景。
869

被折叠的 条评论
为什么被折叠?



