题目:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]
提示:
两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列
思路:
新建一个链表并保存他的头结点,遍历比较两个链表的值,将较小的值用一个新建的链表节点保存,并放入新建的链表末尾,同时较小值的链表指针后移一位,若其中一个链表不存在,则指针指向另一个链表
代码:
var mergeTwoLists = function(list1, list2) {
var res = new ListNode(); // 新建一个链表res
var head = res // 记录头结点
while(list1 && list2) {
if(list1.val < list2.val) { // 当比较出较小值
res.next = new ListNode(list1.val) // res新建一个节点链接在末尾
list1 = list1.next // 较小值对应链表指针移动一位
} else {
res.next = new ListNode(list2.val)
list2 = list2.next
}
res = res.next // 移动新建链表指针
}
if(list1) { // 其中一个链表为空
res.next = list1
}
if(list2) {
res.next = list2
}
return head.next;
};
该篇文章描述了如何将两个已排序的链表合并成一个新的升序链表,通过比较节点值并逐个添加到新链表中,处理了链表为空或一个链表较短的情况。

527

被折叠的 条评论
为什么被折叠?



