力扣21 合并两个有序链表

6 阅读1分钟

思路:

本题要求合并两个有序链表
依旧是创建一个假头,然后遍历依次链接到新链表上就好
唯一需要注意的就是链接时不需要new了,直接=就可以,多余部分在下一次循环中会被next覆盖

代码:

先创建假头,返回结果就是假头的下一个节点
然后开始循环,另外创建一个指针cur在新链表上从头遍历到尾
如果链表1的值小,就把链表1链接到新链表上
否则把链表2链接上
循环结束后剩余部分也链接到新链表的尾部

var mergeTwoLists = function (list1, list2) {
    let dummy = new ListNode()
    let cur = dummy
    while (list1 && list2) {
        if (list1.val <= list2.val) {
            cur.next = list1
            list1 = list1.next
            cur = cur.next
        } else {
            cur.next = list2
            list2 = list2.next
            cur = cur.next
        }
    }
    cur.next = list1 || list2
    return dummy.next
};