Leetcode 328. Odd Even Linked List | | Leetcode 328. Odd Even Linked List 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. Description 2. Solution Version 1 123456789101112131415161718192021222324252627282930/** * 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 123456789101112131415161718192021222324252627282930313233/** * 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 123456789101112131415161718192021222324252627/** * 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 https://leetcode.com/problems/odd-even-linked-list/description/ 如果有收获,可以请我喝杯咖啡! 赏 微信打赏 支付宝打赏