方法: 声明一个新的节点,存储新的链表。 由于是排好序的链表,所以链表前面的节点一定是最小的,所以我们只要依次对比两个链表的头节点,将小的节点放入新链表即可。
function ListNode(x){
this.val = x;
this.next = null;
}
function Merge(pHead1, pHead2)
{
if(!pHead1) return pHead2; // 异常判断
if(!pHead2) return pHead1;
let headNode = new ListNode(-1); // 新链表的头节点
let cur = headNode; // 存储最新保存的节点
while(pHead1 && pHead2) {
const val1 = pHead1.val;
const val2 = pHead2.val;
if(val1 <= val2) { // 谁小就存入新的链表
cur.next = pHead1
pHead1 = pHead1.next;
} else {
cur.next = pHead2;
pHead2 = pHead2.next;
}
cur = cur.next; // 更新节点
}
cur.next = pHead1 ? pHead1 : pHead2; // 若对比完,有剩余节点,直接存入新链表
return headNode.next; // 返回新链表
}