题解 | #合并k个已排序的链表#

合并k个已排序的链表

https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param lists ListNode类一维数组 
 * @return ListNode类
 */
function mergeKLists( lists ) {
    // write code here
    if(lists.length === 0) {
        return null
    }
    if(lists.length === 1) {
        return lists[0]
    }
    const result = []
    for( let i=0; i<lists.length-1; i+=2) {
        result.push(nodeSort(lists[i],lists[i+1]))
    }
    if(lists.length %2 !== 0 ) {
        result.push(lists[lists.length-1])
    }
    return mergeKLists(result)
}

function nodeSort (head1,head2) {
    let p = new ListNode(1)
    let pNode = p
    let p1 = head1
    let p2 = head2
    while (p1 && p2) {
        if(p1.val <= p2.val) {
            p.next = p1
            p1 = p1.next
        }
        else {
            p.next = p2
            p2 = p2.next
        }
        p = p.next
    }
    if (p1) {
        p.next = p1
    }
    if (p2) {
        p.next = p2
    }
    return pNode.next
}
module.exports = {
    mergeKLists : mergeKLists
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务