单链表的归并排序

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */

/**
 * 
 * @param head ListNode类 the head node
 * @return ListNode类
 */
function sortInList( head ) {
    if(head==null||head.next==null){
        return head
    }
    let slow = head,fast = head.next

    while(fast!=null&&fast.next!=null){
        slow = slow.next
        fast = fast.next.next
    }
    let newList = slow.next
    slow.next = null
    return merge(sortInList(head),sortInList(newList))
}
function merge(left,right){
    let newHead = new ListNode(-1)
    let current = newHead
    while(left && right){
        if(left.val<right.val){
            current.next = left
            left = left.next
        }else{
            current.next = right
            right = right.next
        }
        current = current.next
    }
    while(left){
        current.next = left
        left = left.next
        current = current.next
    }
    while(right){
        current.next = right
        right = right.next
        current = current.next
    }
    return newHead.next
}
module.exports = {
    sortInList : sortInList
};
链表算法 文章被收录于专栏

链表相关算法

全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
感觉他们一点都不了解现在这个社会就业有多难,已经在牛客刷到好多篇&nbsp;延毕的帖子了,延毕就会导致已经找好的工作就没了,还得重新再找,学校和老师们是怎么想的呢????看到学生丢失工作会开心吗&nbsp;就业数据都在造假,真实的就业困难不去解决&nbsp;一个个真是好样的
从明天开始狠狠卷JV...:学生看到的是导师不放实习导致offer黄了。 导师看到的是招进来的学生吃自己补助和自己的招生名额,却没给自己升迁带来任何帮助,还要跑路。 根本利益的不一致,最主要留校的导师大概率是职场上招聘失败的,被迫留校的,什么牛鬼蛇神都会有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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