21. Merge Two Sorted Lists
Leetcode
題目
Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]Input: list1 = [], list2 = []
Output: []Input: list1 = [], list2 = [0]
Output: [0]解答
Last updated
Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]Input: list1 = [], list2 = []
Output: []Input: list1 = [], list2 = [0]
Output: [0]Last updated
var mergeTwoLists = function(list1, list2) {
if(!list1) return list2;
if(!list2) return list1;
let head = list1.val <= list2.val ? list1 : list2;
let p1 = head.next;
let p2 = head === list1 ? list2 : list1;
const result = head;
while(p1 && p2) {
if(p1.val<=p2.val) {
head.next = p1;
head = p1;
p1 = p1.next;
} else {
head.next = p2;
head = p2;
p2 = p2.next;
}
}
// 其中一個 pointer 為 null 的話,剩下的要指向另一個 linked list
if(!p1) head.next = p2;
if(!p2) head.next = p1;
return result;
};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;
}
};var mergeTwoLists = function(list1, list2) {
const dummy = new ListNode(-1);
let head = dummy;
while(list1 && list2) {
if(list1.val <= list2.val) {
head.next = list1;
list1 = list1.next;
} else {
head.next = list2;
list2 = list2.next;
}
head = head.next;
}
head.next = list1 === null ? list2 : list1;
return dummy.next;
};