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

解题思路

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

你可能感兴趣的:(leetcode)