这题做的真的很难受,因为昨天新买的鼠标太不灵敏了,点击感太差,影响思路。
实名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;
}
};