题解 | #单链表的排序#

单链表的排序

http://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08

class Solution {
public:
    ListNode* sortInList(ListNode* head) {
        // write code here
        if(head == nullptr || head->next==nullptr) return head;
        ListNode* slow,*fast,*pre;
        pre = head;
        slow = head->next;
        fast = head->next->next;
        while(fast!=nullptr && fast->next!=nullptr) {
            pre = pre->next;
            slow = slow->next;
            fast = fast->next->next;
        }
        pre->next = nullptr;
        ListNode* sortedHead = sortInList(head);
        ListNode* sortedSlow = sortInList(slow);
        return merge(sortedHead, sortedSlow);
    }
    ListNode* merge(ListNode* p,ListNode* q){
        if(p==nullptr) return q;
        if(q==nullptr) return p;
        if(p->val < q->val){
            p->next = merge(p->next, q);
            return p;
        }
        else{
            q->next = merge(p, q->next);
            return q;
        }
    }
};

https://www.cnblogs.com/grandyang/p/4249905.htmlhttps://www.cnblogs.com/grandyang/p/4249905.html
全部评论

相关推荐

01-17 12:35
吉首大学 Java
秋招之BrianGriffin:自己的工作自己做!😡
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务