将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的
示例:
输入: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
};