O(n) time O(1) space
思路就是维护odd和even两个指针,扫一遍链表把odd跟even拆出来,最后odd跟even的head连起来即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
class Solution { public: ListNode* oddEvenList(ListNode* head) { if (!head) return head; auto odd = head, even = odd->next, even_head = even; while (even && even->next) { odd->next = even->next; odd = odd->next; even->next = odd->next; even = even->next; } odd->next = even_head; return head; } };
|