题目描述
将两个升序链表合并为一个新的 升序 链表并返回。
新链表是通过拼接给定的两个链表的所有节点组成的。
示例
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
复制代码
解题思路
- 定义两个指针,分别指向
l1
,l2
- 当两个链表都存在值时:
- 比较相应的值,谁小就将谁的值取出,并将其指针往后移动
- 当一个链表遍历完成之后:
- 将剩余的链表直接赋值到最后即可
代码
var mergeTwoLists = function (list1, list2) {
// 保持 next 代码统一
let fakeHead = new ListNode(0);
let head = fakeHead;
// 都存在比较值
while (list1 && list2) {
if (list1.val < list2.val) {
head.next = list1;
list1 = list1.next;
} else {
head.next = list2;
list2 = list2.next;
}
// 链表指向下一位
head = head.next;
}
if (list1) {
head.next = list1;
}
if (list2) {
head.next = list2;
}
return fakeHead.next;
};
复制代码