链表的归并排序

链表的归并排序,第1张

链表的归并排序

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;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5711484.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存