题目
您将获得两个排序链接列表“list1”和“list2”的标题。
将两个列表合并为一个排序列表。该列表应通过将前两个列表的节点拼接在一起来制作。
返回合并链接列表的开头。
示例 1:
输入: list1 = [1,2,4], list2 = [1,3,4]
输出: [1,1,2,3,4,4]
示例 2:
输入: list1 = [], list2 = []
输出: []
示例 3:
输入: list1 = [], list2 = [0]
输出: [0]
思路
- 先处理只有一个链表的情况
- 交替向前移动
function mergeTwoLists(list1: ListNode | null, list2: ListNode | null): ListNode | null {
const list = new ListNode();
let curr = list;
while (list1 || list2) {
if (!list1) {
curr.next = new ListNode(list2.val);
curr = curr.next;
list2 = list2.next;
continue;
}
if (!list2) {
curr.next = new ListNode(list1.val);
curr = curr.next;
list1 = list1.next;
continue;
}
if (list1.val <= list2.val) {
curr.next = new ListNode(list1.val);
curr = curr.next;
list1 = list1.next;
} else {
curr.next = new ListNode(list2.val);
curr = curr.next;
list2 = list2.next;
}
}
return list.next;
}