congr / world

2 stars 1 forks source link

LeetCode : 328. Odd Even Linked List #478

Closed congr closed 5 years ago

congr commented 5 years ago

https://leetcode.com/problems/odd-even-linked-list/

image

congr commented 5 years ago

O(1) space, Can't use more pointers.

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode oddEvenList(ListNode head) {
        if (head == null) return null;

        ListNode evenHead = head.next;
        ListNode odd = head, even = evenHead;

        while(odd != null && even != null && even.next != null) { // !!!
            odd.next = even.next;
            odd = odd.next;
            even.next = odd.next;
            even = even.next;
        }

        odd.next = evenHead;
        return head;
    }
}