一、题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
提示
- 两个链表的节点数目范围是
[0, 50]
-100 <= Node.val <= 100
l1
和l2
均按 非递减顺序 排列
二、题解
方法1:循环
var mergeTwoLists = function(list1, list2) {
const list3 = new ListNode(0)
let p1 = list1
let p2 = list2
let p3 = list3
while (p1 || p2) {
if (!p1) {
p3.next = p2
break
}
if (!p2) {
p3.next = p1
break
}
if (p1.val <= p2.val) {
p3.next = p1
p1 = p1.next
} else {
p3.next = p2
p2 = p2.next
}
p3 = p3.next;
}
return list3.next
};
方法2:递归
var mergeTwoLists = function(list1, list2) {
if(!list1){
return list2;
}
if(!list2){
return list1;
}
if(list1.val<list2.val){
list1.next = mergeTwoLists(list1.next,list2)
return list1
}else{
list2.next = mergeTwoLists(list1,list2.next)
return list2
}
};