/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* sortList(ListNode* head) {
if(!head || !head->next){
return head;
}
ListNode* fast=head->next;
ListNode* slow=head;
while(fast!=nullptr && fast->next!=nullptr){
fast=fast->next->next;
slow=slow->next;
}
ListNode* temp=slow->next;
slow->next=nullptr;
ListNode* left=sortList(head);
ListNode* right=sortList(temp);
ListNode* res=new ListNode(0);
ListNode* pt=res;
while(left!=nullptr && right!=nullptr){
if(left->val>right->val){
pt->next=right;
right=right->next;
}else{
pt->next=left;
left=left->next;
}
pt=pt->next;
}
pt->next=left==nullptr?right:left;
return res->next;
}
};
链表的归并排序
于 2022-01-23 16:04:11 首次发布