https://leetcode-cn.com/problems/merge-two-sorted-lists/
点击查看【bilibili】
题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
Input: l1 = [1,2,4], l2 = [1,3,4]
Output: [1,1,2,3,4,4]
Input: l1 = [], l2 = []
Output: []
Input: l1 = [], l2 = [0]
Output: [0]
解答
- 创建curr(空链表),dummy指向curr
- 循环两个链表,两个链表都不为空时,比较值
- 把最小的值排在前面赋值给新链表,最小值的链表指针向前移动,新链表指针向前移动,
继续进行循环比较
- 当其中一个链表遍历完了(null),另一个链表中剩余的数肯定是比这个链表的数要大,
那么直接把剩余链表赋值给新链表
- 返回dummy值
答案
var mergeTwoLists = function(l1, l2) {
let curr = new ListNode()
let dummy = curr;
// 当两个链表都不为空的时候进行比较
while(l1!== null && l2!== null) {
// 如果l1的值小于l2的值,curr=l1
if(l1.val < l2.val) {
curr.next = l1
l1 = l1.next
// 否则curr=l2
}else {
curr.next = l2
l2 = l2.next
}
// curr指针向前移动,不然再次循环会覆盖当前值
curr = curr.next
}
// 把剩余链表添加到新链表
if(l1!== null) {
curr.next = l1
}
if(l2!== null) {
curr.next = l2
}
return dummy.next
};