LeetCode 148. 排序链表

class Solution {
public:
    ListNode* sortList(ListNode* head) {
        if(!head||!head->next)  return head;
        ListNode* fast=head,*slow=head;
        while(fast->next&&fast->next->next)
        {
            slow=slow->next;
            fast=fast->next->next;
        }
        fast=slow;
        slow=slow->next;
        fast->next=NULL;
        auto l=sortList(head);
        auto r=sortList(slow);
        return merge(l,r);
    }
    ListNode* merge(ListNode* l,ListNode* r)
    {
        ListNode* dummy=new ListNode(-1);
        ListNode* cur=dummy;
        while(l&&r)
        {
            if(l->val<r->val)
            {
                cur->next=l;
                l=l->next;
            }
            else
            {
                cur->next=r;
                r=r->next;
            }
            cur=cur->next;
        }
        cur->next=l?l:r;
        return dummy->next;
    }
};
posted @   穿过雾的阴霾  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示