题解 | #单链表的排序#

单链表的排序

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
全部评论

相关推荐

面向对象的火龙果很爱...:去吃一顿炸鸡就走
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务