剑指offer_合并两个排序的链表

95 阅读1分钟

题目描述

输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。

样例:

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

输出:1->2->3->4->5->5

虚拟头节点的使用 遍历,+尾巴拼接即可

Code

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var merge = function(l1, l2) {
    if(!l1) return l2;
    if(!l2) return l1;
    
    //合并两个有序链表,遍历一遍即可
    let dummy = new ListNode(-1);
    let cur = dummy;
    while(l1 && l2){
        if(l1.val < l2.val){
            cur.next = new ListNode(l1.val);
            l1 = l1.next;
            cur = cur.next;
        }else{
            cur.next = new ListNode(l2.val);
            l2 = l2.next;
            cur = cur.next;
        }
    }
    //尾巴
    if(l1) cur.next = l1;
    if(l2) cur.next = l2;
    return dummy.next;
    
};