题解 | #万万没想到之聪明的编辑#

单链表的排序

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

利用快排思想,把头节点作为标记,采取值交换的方式将比标记小或大的分别放在两边

/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 the head node
     * @return ListNode类
     */
    ListNode* Get_Partion(ListNode* B, ListNode* E){
        if(B==nullptr||B->next==E) return B;
        int key=B->val;
        ListNode *p=B,*q=p->next;
        while(q!=E){
            if(q->val<key){
                p=p->next;
                swap(p->val,q->val);
            }
            q=q->next;
        }
        swap(p->val,B->val);
        return p;
    }
    void QuickSort(ListNode* B, ListNode* E){
        if(B==E) return;
        ListNode *P = Get_Partion(B, E);
        QuickSort(B, P);
        QuickSort(P->next, E);
    }

    ListNode* sortInList(ListNode* head) {
        QuickSort(head,nullptr);
        return head;
    }

};
全部评论

相关推荐

点赞 评论 收藏
分享
08-04 22:37
桂林学院 Java
行不行阿细GO:说真的我现在看到校招java简历都头痛。。千篇一律和阅卷高考作文差不多,估计公司也是吧,到最后就看学历和大厂实习了
投递BOSS直聘等公司10个岗位
点赞 评论 收藏
分享
08-30 15:51
已编辑
蚌埠坦克学院 Java
狸猫换offer:感觉hr写这段字的时候充满怨气
lastday知无不言
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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