class Solution {
public:
ListNode* mer(ListNode* p1,ListNode* p2)
{
if(!p1) return p2;
if(!p2) return p1;
ListNode *head,*ret;
if(p1->val>p2->val)
{
head=p2;
p2=p2->next;
}else{
head=p1;
p1=p1->next;
}
ret=head;
while(p2&&p1)
{
if(p1->val>p2->val)
{
head->next=p2;
head=p2;
p2=p2->next;
}else{
head->next=p1;
head=p1;
p1=p1->next;
}
}
if(p1) head->next=p1;
else head->next=p2;
return ret;
}
ListNode* sortList(ListNode* head) {
if(head==NULL||head->next==NULL) return head;
ListNode *f(head),*s(head);
while(f->next&&f->next->next)
{
f=f->next->next;
s=s->next;
}
f=s->next;
s->next=NULL;
head=sortList(head);
f=sortList(f);
return mer(head,f);
}
};
leetcode - 148. Sort List
最新推荐文章于 2022-10-08 19:00:04 发布