力扣:合并两个有序链表js

1,077 阅读1分钟

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的

示例:

输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/me…

解题思路: 有序合并和排序差不多,只是考察链表的使用而已,核心思想是比较l1l2的值的大小,然后把小的加入新链表的尾部,然后再把加入链表尾部的数值从原来的链表删去,最后再把未循环的链表加入新链表尾部即可

var mergeTwoLists = function(l1, l2) {
    let l3= new ListNode();
    let res = l3;
    while(l1!=null && l2!=null){
        //如果l1 l2两者都不为空时,进入循环
        if(l1.val>=l2.val){
            res.next = l2;
            l2 = l2.next;
             //如果l1大于l2,则让l2加入队尾,l2指向next也就是删除刚加入队尾的值
        }
        else{
             res.next = l1;
            l1 = l1.next;
        }
        res = res.next;
    }
    //循环后l1 l2中肯定有一个是空的,不为空的则直接加入链表队尾
    if(l1!=null){
        res.next = l1
    }
    if(l2!=null){
        res.next = l2
    }
    return l3.next
};