LeetCode 21 :合并两个有序链表 - 递归

135 阅读1分钟

这题做的真的很难受,因为昨天新买的鼠标太不灵敏了,点击感太差,影响思路。

实名diss一下雷帕的鼠标,真的很鸡肋,不要买!

已经退货了!!!

说正事:

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

示例 1:

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

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

题解

我们可以将这个问题简化为一个字问题:

将l1的头结点提取出来,就剩下 l1.next和 l2,我们就只需要比较 l1.next和 l2的数值大小就好了,将小的那个插入到 l1的后面,就完成了一小步。

所以,我们每次需要做的其实就是将当前的节点提取出来,以另外两个节点为参数,进行mergeTwoLists的问题。

var mergeTwoLists = function(l1, l2) {
    if(l1 === null){
        return l2;
    }else if(l2 === null){
        return l1;
    }
    if(l1.val < l2.val) {
        l1.next = mergeTwoLists(l1.next, l2);
        return l1;
    } else {
        l2.next = mergeTwoLists(l1, l2.next);
        return l2;
    }
};

leetcode-cn.com/problems/me…