4、JS实现合并两个有序链表

147 阅读1分钟

合并两个有序链表

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

图片.png

输入: l1 = [1,2,4], l2 = [1,3,4]
输出: [1,1,2,3,4,4]

思路

创建一个初始头节点,将头节点与list1和list2中较小的那个连接,并且将对应list的指针下移,并且将头节点的指针下移,更新list的链表和头节点链表,直到有一个链表为空了,最后还要把剩下那个没空的链表加到头节点后面

实现

var mergeTwoLists = function(list1, list2) {

    //创建一个虚拟头节点

    let head=new ListNode(0)

    let p=head

    while(list1&&list2){

        if(list1.val<list2.val){

            p.next=list1

            list1=list1.next

        }else{

            p.next=list2

            list2=list2.next

        }

        p=p.next

    }
    //这里要判断最后一次跳出循环时,p.next指向哪个节点(指向的那个就是空节点)
    p.next==list1?p.next=list2:p.next=list1

    return head.next

};