題目: LeetCode - 328. Odd Even Linked List

題目說明

給一個 Linked List,題目要求將奇數的 node 往前放,偶數的 node 往後放。

解題思路

將原本的第一個節點當作奇數 node 的頭,第二個節點當作偶數 node 的頭,將奇數與偶數各自串起,最後將偶數 node 的頭接在奇數最後一個 node 後面即可。

參考解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
if (!head || !head->next)
return head;
auto odd = head, even = head->next, evenhead = even;
while(even && even->next)
{
odd->next = odd->next->next;
even->next = even->next->next;
odd = odd->next, even = even->next;
}
odd->next = evenhead;
return head;
}
};