欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Leetcode】328.(Medium)Odd Even Linked List

程序员文章站 2022-07-14 08:45:35
...

解题思路

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

运行结果

【Leetcode】328.(Medium)Odd Even Linked List