只需设置俩个指针,每次比较,小的加入新的链表,然后指针后移,直到一个链表全部被添加进新的链表。如果某个链表还有剩余,直接加在新链表尾部即可。最后返回新的头结点。
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var mergeTwoLists = function(l1, l2) {
let newHead = null;
let pre;
let p1 = l1;
let p2 = l2;
// p1,p2不为空时
while(p1 != null && p2 != null){
if(p1.val <= p2.val){
// 尾插
if(newHead == null){
newHead = p1;
pre = newHead;
}else{
pre.next = p1;
pre = p1;
}
//后移
p1 = p1.next;
}else{
if(newHead == null){
newHead = p2;
pre = newHead;
}else{
pre.next = p2;
pre = p2;
}
//后移
p2 = p2.next;
}
}
if(p1 != null){//l1还没有遍历完
while(p1 != null){
if(newHead == null){
newHead = p1;
pre = newHead;
}else{
pre.next = p1;
pre = p1;
}
p1 = p1.next;
}
}
if(p2 != null){//l2还没有遍历完
while(p2 != null){
if(newHead == null){
newHead = p2;
pre = newHead;
}else{
pre.next = p2;
pre = p2;
}
p2 = p2.next;
}
}
return newHead;
};