Leetcode|Leetcode 328. Odd Even Linked List

【Leetcode|Leetcode 328. Odd Even Linked List】文章作者:Tyan
博客:noahsnail.com|CSDN|
1. Description Leetcode|Leetcode 328. Odd Even Linked List
文章图片
Odd Even Linked List 2. Solution

  • Version 1
/** * Definition for singly-linked list. * struct ListNode { *int val; *ListNode *next; *ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* oddEvenList(ListNode* head) { if(!head || !head->next) { return head; } ListNode* even = head->next; ListNode* current = head; ListNode* next = nullptr; while(current->next) { next = current->next; current->next = current->next->next; current = next; } current = head; while(current->next) { current = current->next; } current->next = even; return head; } };

  • Version 2
/** * Definition for singly-linked list. * struct ListNode { *int val; *ListNode *next; *ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* oddEvenList(ListNode* head) { if(!head || !head->next) { return head; } int count = 1; ListNode* odd = head; ListNode* even = head->next; ListNode* current = head; ListNode* next = nullptr; while(current->next) { next = current->next; current->next = current->next->next; current = next; count++; if(count % 2) { odd = current; } } current = head; odd->next = even; return head; } };

  • Version 3
/** * Definition for singly-linked list. * struct ListNode { *int val; *ListNode *next; *ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* oddEvenList(ListNode* head) { if(!head || !head->next) { return head; } ListNode* odd = head; ListNode* even = head->next; ListNode* even_head = head->next; while(odd->next && even->next) { odd->next = odd->next->next; even->next = even->next->next; odd = odd->next; even = even->next; } odd->next = even_head; return head; } };

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

    推荐阅读