Leetcode328奇偶链表
这个是自己一开始自己想的,没有考虑原地操作,空间不是O(1)
ListNode *oddEvenList(ListNode *head)
{
ListNode *p = head;
ListNode *odd = new ListNode(INT_MIN);
odd->next = nullptr;
LsitNode *even = new ListNode(INT_MIN);
even->next = nullptr;
ListNode *e = even;
ListNode *o = odd;
int i = 1;
while(p)
{
if(i % 2 == 0)
{
e->next = p;
e = e->next;
}
else
{
o->next = p;
o = o->next;
}
p = p->next;
i++;
}
e->next = nullptr;
o->next = even->next;
return odd->next;
}
原地操作的话其实和分开两个链表的思想是一样的
ListNode* oddEvenList(ListNode* head)
{
if(head == nullptr) return nullptr;
ListNode *even = head->next;
ListNode *odd = head;
ListNode *s = even;
while(even != nullptr && even->next != nullptr)
{
odd->next = even->next;
odd = odd->next;
even->next = odd->next;
even = even->next;
}
odd->next = s;
return head;
}
保持好奇心!

浙公网安备 33010602011771号