【LeetCode】【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 1:

Input: 1->2->3->4->5->NULL
Output: 1->3->5->2->4->NULL

解题思路:这个题目的意思是把奇数号位置的节点放在偶数号位置之前(不要误理解成节点值为奇数)

    public ListNode oddEvenList(ListNode head) {
        if (head == null) return null;
        ListNode oddNode = head;
        ListNode evenNode = head.next;
        ListNode evenStart = head.next;    //记一下偶数位的开始节点
        while (evenNode!=null && evenNode.next!=null){
            oddNode.next = evenNode.next;
            oddNode = oddNode.next;
            evenNode.next = oddNode.next;
            evenNode = evenNode.next;
        }
        oddNode.next = evenStart;  //最后一位是偶数位,自动最后是空指针
        return head;
    }

猜你喜欢

转载自blog.csdn.net/u012503241/article/details/82862848