328. Odd Even Linked List

Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.

You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.

Example:
Given 1->2->3->4->5->NULL,
return 1->3->5->2->4->NULL.

Note:
The relative order inside both the even and odd groups should remain as it was in the input. 
The first node is considered odd, the second node even and so on ...

Credits:
Special thanks to @DjangoUnchained for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

主要就是把它分成两个链表,一个为奇数的 一个为偶数的。

因为题目是连续的1,2,3,4,5,6等,是连续的一奇一偶,所以就比较简单了。

public class Solution {
    public ListNode OddEvenList(ListNode head) {
        if(head==null||head.next==null) return head;
        ListNode evenhead=head.next;
        ListNode odd=head;
        ListNode even=head.next;
//这里的判断很重要,开始我没有加上even!=null,然后在1,2,3这组数据就RE了,
原因是even已经指到4了,而4是不存在的.
        while(even!=null&&even.next!=null)
        {
            odd.next=even.next;
            odd=odd.next;
            even.next=odd.next;
            even=even.next;
        }
        odd.next=evenhead;
        return head;
       
    }
}




你可能感兴趣的:(328. Odd Even Linked List)