1. 题目描述
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 题解
1、迭代比较
思路:建立伪头节点,遍历链表1和2,对每对节点的值的大小进行比较,最后判断链表1和2是否全部遍历完,然后返回伪头节点的next指向的节点即可。
(学习这种简洁的代码写法)
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var mergeTwoLists = function(l1, l2) {
let dum = new ListNode(0);
let curr = dum;
while(l1 && l2){
if(l1.val >= l2.val){
curr.next = l2;
l2 = l2.next;
}else{
curr.next = l1;
l1 = l1.next;
}
curr = curr.next;
}
curr.next = (!l1) ? l2 : l1;
return dum.next;
};
应该还有一种思路是分而治之,以后看。