题解 | 合并两个排序的链表

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

function Merge(pHead1, pHead2) {
    let dummy = new ListNode(-1);
    let current = dummy;
    let p1 = pHead1;
    let p2 = pHead2;

    while (p1 !== null && p2 !== null) {
        if (p1.val <= p2.val) {
            current.next = p1;
            p1 = p1.next;
        } else {
            current.next = p2;
            p2 = p2.next;
        }
        current = current.next;
    }
    if (p1 !== null) {
        current.next = p1;
    }
    if (p2 !== null) {
        current.next = p2;
    }
    return dummy.next;

    // // 创建一个虚拟头节点
    // let dummy = new ListNode(-1);
    // let current = dummy;

    // // 初始化两个指针
    // let p1 = pHead1;
    // let p2 = pHead2;

    // // 遍历两个链表
    // while (p1 !== null && p2 !== null) {
    //     if (p1.val <= p2.val) {
    //         current.next = p1;
    //         p1 = p1.next;
    //     } else {
    //         current.next = p2;
    //         p2 = p2.next;
    //     }
    //     current = current.next;
    // }

    // // 如果其中一个链表还有剩余节点,直接连接到当前链表后面
    // if (p1 !== null) {
    //     current.next = p1;
    // }
    // if (p2 !== null) {
    //     current.next = p2;
    // }

    // // 返回合并后的链表头节点
    // return dummy.next;
}

module.exports = {
    Merge: Merge,
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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